Merge "Fix bug #5846413 "phone" keyboard layout is broken on master"
diff --git a/api/current.txt b/api/current.txt
index ab2ef54..6ad8407 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -7981,8 +7981,8 @@
     method public void drawPoint(float, float, android.graphics.Paint);
     method public void drawPoints(float[], int, int, android.graphics.Paint);
     method public void drawPoints(float[], android.graphics.Paint);
-    method public void drawPosText(char[], int, int, float[], android.graphics.Paint);
-    method public void drawPosText(java.lang.String, float[], android.graphics.Paint);
+    method public deprecated void drawPosText(char[], int, int, float[], android.graphics.Paint);
+    method public deprecated void drawPosText(java.lang.String, float[], android.graphics.Paint);
     method public void drawRGB(int, int, int);
     method public void drawRect(android.graphics.RectF, android.graphics.Paint);
     method public void drawRect(android.graphics.Rect, android.graphics.Paint);
@@ -8000,8 +8000,8 @@
     method public int getDensity();
     method public android.graphics.DrawFilter getDrawFilter();
     method public int getHeight();
-    method public void getMatrix(android.graphics.Matrix);
-    method public final android.graphics.Matrix getMatrix();
+    method public deprecated void getMatrix(android.graphics.Matrix);
+    method public final deprecated android.graphics.Matrix getMatrix();
     method public int getMaximumBitmapHeight();
     method public int getMaximumBitmapWidth();
     method public int getSaveCount();
@@ -8331,7 +8331,7 @@
     method public final boolean isDither();
     method public final boolean isFakeBoldText();
     method public final boolean isFilterBitmap();
-    method public final boolean isLinearText();
+    method public final deprecated boolean isLinearText();
     method public final boolean isStrikeThruText();
     method public final boolean isSubpixelText();
     method public final boolean isUnderlineText();
@@ -8351,7 +8351,7 @@
     method public void setFilterBitmap(boolean);
     method public void setFlags(int);
     method public void setHinting(int);
-    method public void setLinearText(boolean);
+    method public deprecated void setLinearText(boolean);
     method public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
     method public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
     method public android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
@@ -17560,6 +17560,7 @@
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
     field public static final java.lang.String RINGTONE = "ringtone";
+    field public static final java.lang.String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj";
     field public static final java.lang.String SCREEN_BRIGHTNESS = "screen_brightness";
     field public static final java.lang.String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
     field public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1; // 0x1
@@ -23817,8 +23818,9 @@
     method public final void dispatchOnGlobalLayout();
     method public final boolean dispatchOnPreDraw();
     method public boolean isAlive();
-    method public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
+    method public deprecated void removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
     method public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener);
+    method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
     method public void removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
     method public void removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
     method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
diff --git a/cmds/servicemanager/binder.c b/cmds/servicemanager/binder.c
index 918d4d4..1985756 100644
--- a/cmds/servicemanager/binder.c
+++ b/cmds/servicemanager/binder.c
@@ -412,7 +412,7 @@
         return;
     }
 
-    bio->data = bio->data0 = data + n;
+    bio->data = bio->data0 = (char *) data + n;
     bio->offs = bio->offs0 = data;
     bio->data_avail = maxdata - n;
     bio->offs_avail = maxoffs;
diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java
index 4f3405b..5fee4de 100644
--- a/core/java/android/accounts/AccountManagerService.java
+++ b/core/java/android/accounts/AccountManagerService.java
@@ -62,6 +62,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -275,7 +276,7 @@
                         accountNames.add(accountName);
                     }
                 }
-                for (HashMap.Entry<String, ArrayList<String>> cur
+                for (Map.Entry<String, ArrayList<String>> cur
                         : accountNamesByType.entrySet()) {
                     final String accountType = cur.getKey();
                     final ArrayList<String> accountNames = cur.getValue();
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index bac3c6c..455d2f0 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -486,7 +486,6 @@
         private static final String HEAP_COLUMN = "%13s %8s %8s %8s %8s %8s %8s";
         private static final String ONE_COUNT_COLUMN = "%21s %8d";
         private static final String TWO_COUNT_COLUMNS = "%21s %8d %21s %8d";
-        private static final String TWO_COUNT_COLUMNS_DB = "%21s %8d %21s %8d";
         private static final String DB_INFO_FORMAT = "  %8s %8s %14s %14s  %s";
 
         // Formatting for checkin service - update version if row format changes
@@ -867,7 +866,6 @@
             int binderProxyObjectCount = Debug.getBinderProxyObjectCount();
             int binderDeathObjectCount = Debug.getBinderDeathObjectCount();
             long openSslSocketCount = Debug.countInstancesOfClass(OpenSSLSocketImpl.class);
-            long sqliteAllocated = SQLiteDebug.getHeapAllocatedSize() / 1024;
             SQLiteDebug.PagerStats stats = SQLiteDebug.getDatabaseInfo();
 
             // For checkin, we print one long comma-separated list of values
@@ -935,9 +933,9 @@
                 pw.print(openSslSocketCount); pw.print(',');
 
                 // SQL
-                pw.print(sqliteAllocated); pw.print(',');
                 pw.print(stats.memoryUsed / 1024); pw.print(',');
-                pw.print(stats.pageCacheOverflo / 1024); pw.print(',');
+                pw.print(stats.memoryUsed / 1024); pw.print(',');
+                pw.print(stats.pageCacheOverflow / 1024); pw.print(',');
                 pw.print(stats.largestMemAlloc / 1024);
                 for (int i = 0; i < stats.dbStats.size(); i++) {
                     DbStats dbStats = stats.dbStats.get(i);
@@ -1003,10 +1001,9 @@
             // SQLite mem info
             pw.println(" ");
             pw.println(" SQL");
-            printRow(pw, TWO_COUNT_COLUMNS_DB, "heap:", sqliteAllocated, "MEMORY_USED:",
-                    stats.memoryUsed / 1024);
-            printRow(pw, TWO_COUNT_COLUMNS_DB, "PAGECACHE_OVERFLOW:",
-                    stats.pageCacheOverflo / 1024, "MALLOC_SIZE:", stats.largestMemAlloc / 1024);
+            printRow(pw, ONE_COUNT_COLUMN, "MEMORY_USED:", stats.memoryUsed / 1024);
+            printRow(pw, TWO_COUNT_COLUMNS, "PAGECACHE_OVERFLOW:",
+                    stats.pageCacheOverflow / 1024, "MALLOC_SIZE:", stats.largestMemAlloc / 1024);
             pw.println(" ");
             int N = stats.dbStats.size();
             if (N > 0) {
diff --git a/core/java/android/database/AbstractCursor.java b/core/java/android/database/AbstractCursor.java
index 74fef29..22df272 100644
--- a/core/java/android/database/AbstractCursor.java
+++ b/core/java/android/database/AbstractCursor.java
@@ -284,23 +284,6 @@
         }
     }
 
-    /**
-     * This is hidden until the data set change model has been re-evaluated.
-     * @hide
-     */
-    protected void notifyDataSetChange() {
-        mDataSetObservable.notifyChanged();
-    }
-
-    /**
-     * This is hidden until the data set change model has been re-evaluated.
-     * @hide
-     */
-    protected DataSetObservable getDataSetObservable() {
-        return mDataSetObservable;
-
-    }
-
     public void registerDataSetObserver(DataSetObserver observer) {
         mDataSetObservable.registerObserver(observer);
     }
diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java
index e45d66d..72f62fd 100644
--- a/core/java/android/database/sqlite/SQLiteConnection.java
+++ b/core/java/android/database/sqlite/SQLiteConnection.java
@@ -74,10 +74,17 @@
  * queues.
  * </p>
  *
+ * <h2>Reentrance</h2>
+ * <p>
+ * This class must tolerate reentrant execution of SQLite operations because
+ * triggers may call custom SQLite functions that perform additional queries.
+ * </p>
+ *
  * @hide
  */
 public final class SQLiteConnection {
     private static final String TAG = "SQLiteConnection";
+    private static final boolean DEBUG = false;
 
     private static final String[] EMPTY_STRING_ARRAY = new String[0];
     private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
@@ -187,8 +194,6 @@
     }
 
     private void open() {
-        SQLiteGlobal.initializeOnce();
-
         mConnectionPtr = nativeOpen(mConfiguration.path, mConfiguration.openFlags,
                 mConfiguration.label,
                 SQLiteDebug.DEBUG_SQL_STATEMENTS, SQLiteDebug.DEBUG_SQL_TIME);
@@ -205,13 +210,13 @@
         }
 
         if (mConnectionPtr != 0) {
-            mRecentOperations.beginOperation("close", null, null);
+            final int cookie = mRecentOperations.beginOperation("close", null, null);
             try {
                 mPreparedStatementCache.evictAll();
                 nativeClose(mConnectionPtr);
                 mConnectionPtr = 0;
             } finally {
-                mRecentOperations.endOperation();
+                mRecentOperations.endOperation(cookie);
             }
         }
     }
@@ -304,9 +309,9 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("prepare", sql, null);
+        final int cookie = mRecentOperations.beginOperation("prepare", sql, null);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 if (outStatementInfo != null) {
                     outStatementInfo.numParameters = statement.mNumParameters;
@@ -328,10 +333,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -349,9 +354,9 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("execute", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("execute", sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -361,10 +366,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -384,9 +389,9 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("executeForLong", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForLong", sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -396,10 +401,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -419,9 +424,9 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("executeForString", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForString", sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -431,10 +436,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -456,9 +461,10 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("executeForBlobFileDescriptor", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForBlobFileDescriptor",
+                sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -470,10 +476,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -493,9 +499,10 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("executeForChangedRowCount", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForChangedRowCount",
+                sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -506,10 +513,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -529,9 +536,10 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        mRecentOperations.beginOperation("executeForLastInsertedRowId", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForLastInsertedRowId",
+                sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -542,10 +550,10 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            mRecentOperations.endOperation();
+            mRecentOperations.endOperation(cookie);
         }
     }
 
@@ -581,9 +589,10 @@
         int actualPos = -1;
         int countedRows = -1;
         int filledRows = -1;
-        mRecentOperations.beginOperation("executeForCursorWindow", sql, bindArgs);
+        final int cookie = mRecentOperations.beginOperation("executeForCursorWindow",
+                sql, bindArgs);
         try {
-            PreparedStatement statement = acquirePreparedStatement(sql);
+            final PreparedStatement statement = acquirePreparedStatement(sql);
             try {
                 throwIfStatementForbidden(statement);
                 bindArguments(statement, bindArgs);
@@ -600,11 +609,11 @@
                 releasePreparedStatement(statement);
             }
         } catch (RuntimeException ex) {
-            mRecentOperations.failOperation(ex);
+            mRecentOperations.failOperation(cookie, ex);
             throw ex;
         } finally {
-            if (mRecentOperations.endOperationDeferLog()) {
-                mRecentOperations.logOperation("window='" + window
+            if (mRecentOperations.endOperationDeferLog(cookie)) {
+                mRecentOperations.logOperation(cookie, "window='" + window
                         + "', startPos=" + startPos
                         + ", actualPos=" + actualPos
                         + ", filledRows=" + filledRows
@@ -615,8 +624,15 @@
 
     private PreparedStatement acquirePreparedStatement(String sql) {
         PreparedStatement statement = mPreparedStatementCache.get(sql);
+        boolean skipCache = false;
         if (statement != null) {
-            return statement;
+            if (!statement.mInUse) {
+                return statement;
+            }
+            // The statement is already in the cache but is in use (this statement appears
+            // to be not only re-entrant but recursive!).  So prepare a new copy of the
+            // statement but do not cache it.
+            skipCache = true;
         }
 
         final int statementPtr = nativePrepareStatement(mConnectionPtr, sql);
@@ -625,7 +641,7 @@
             final int type = DatabaseUtils.getSqlStatementType(sql);
             final boolean readOnly = nativeIsReadOnly(mConnectionPtr, statementPtr);
             statement = obtainPreparedStatement(sql, statementPtr, numParameters, type, readOnly);
-            if (isCacheable(type)) {
+            if (!skipCache && isCacheable(type)) {
                 mPreparedStatementCache.put(sql, statement);
                 statement.mInCache = true;
             }
@@ -637,31 +653,38 @@
             }
             throw ex;
         }
+        statement.mInUse = true;
         return statement;
     }
 
     private void releasePreparedStatement(PreparedStatement statement) {
+        statement.mInUse = false;
         if (statement.mInCache) {
             try {
                 nativeResetStatementAndClearBindings(mConnectionPtr, statement.mStatementPtr);
             } catch (SQLiteException ex) {
-                // The statement could not be reset due to an error.
-                // The entryRemoved() callback for the cache will recursively call
-                // releasePreparedStatement() again, but this time mInCache will be false
-                // so the statement will be finalized and recycled.
-                if (SQLiteDebug.DEBUG_SQL_CACHE) {
-                    Log.v(TAG, "Could not reset prepared statement due to an exception.  "
+                // The statement could not be reset due to an error.  Remove it from the cache.
+                // When remove() is called, the cache will invoke its entryRemoved() callback,
+                // which will in turn call finalizePreparedStatement() to finalize and
+                // recycle the statement.
+                if (DEBUG) {
+                    Log.d(TAG, "Could not reset prepared statement due to an exception.  "
                             + "Removing it from the cache.  SQL: "
                             + trimSqlForDisplay(statement.mSql), ex);
                 }
+
                 mPreparedStatementCache.remove(statement.mSql);
             }
         } else {
-            nativeFinalizeStatement(mConnectionPtr, statement.mStatementPtr);
-            recyclePreparedStatement(statement);
+            finalizePreparedStatement(statement);
         }
     }
 
+    private void finalizePreparedStatement(PreparedStatement statement) {
+        nativeFinalizeStatement(mConnectionPtr, statement.mStatementPtr);
+        recyclePreparedStatement(statement);
+    }
+
     private void bindArguments(PreparedStatement statement, Object[] bindArgs) {
         final int count = bindArgs != null ? bindArgs.length : 0;
         if (count != statement.mNumParameters) {
@@ -735,9 +758,10 @@
      * Dumps debugging information about this connection.
      *
      * @param printer The printer to receive the dump, not null.
+     * @param verbose True to dump more verbose information.
      */
-    public void dump(Printer printer) {
-        dumpUnsafe(printer);
+    public void dump(Printer printer, boolean verbose) {
+        dumpUnsafe(printer, verbose);
     }
 
     /**
@@ -752,15 +776,21 @@
      * it should not crash.  This is ok as it is only used for diagnostic purposes.
      *
      * @param printer The printer to receive the dump, not null.
+     * @param verbose True to dump more verbose information.
      */
-    void dumpUnsafe(Printer printer) {
+    void dumpUnsafe(Printer printer, boolean verbose) {
         printer.println("Connection #" + mConnectionId + ":");
+        if (verbose) {
+            printer.println("  connectionPtr: 0x" + Integer.toHexString(mConnectionPtr));
+        }
         printer.println("  isPrimaryConnection: " + mIsPrimaryConnection);
-        printer.println("  connectionPtr: 0x" + Integer.toHexString(mConnectionPtr));
         printer.println("  onlyAllowReadOnlyOperations: " + mOnlyAllowReadOnlyOperations);
 
         mRecentOperations.dump(printer);
-        mPreparedStatementCache.dump(printer);
+
+        if (verbose) {
+            mPreparedStatementCache.dump(printer);
+        }
     }
 
     /**
@@ -917,6 +947,12 @@
 
         // True if the statement is in the cache.
         public boolean mInCache;
+
+        // True if the statement is in use (currently executing).
+        // We need this flag because due to the use of custom functions in triggers, it's
+        // possible for SQLite calls to be re-entrant.  Consequently we need to prevent
+        // in use statements from being finalized until they are no longer in use.
+        public boolean mInUse;
     }
 
     private final class PreparedStatementCache
@@ -929,7 +965,9 @@
         protected void entryRemoved(boolean evicted, String key,
                 PreparedStatement oldValue, PreparedStatement newValue) {
             oldValue.mInCache = false;
-            releasePreparedStatement(oldValue);
+            if (!oldValue.mInUse) {
+                finalizePreparedStatement(oldValue);
+            }
         }
 
         public void dump(Printer printer) {
@@ -957,12 +995,15 @@
     }
 
     private static final class OperationLog {
-        private static final int MAX_RECENT_OPERATIONS = 10;
+        private static final int MAX_RECENT_OPERATIONS = 20;
+        private static final int COOKIE_GENERATION_SHIFT = 8;
+        private static final int COOKIE_INDEX_MASK = 0xff;
 
         private final Operation[] mOperations = new Operation[MAX_RECENT_OPERATIONS];
         private int mIndex;
+        private int mGeneration;
 
-        public void beginOperation(String kind, String sql, Object[] bindArgs) {
+        public int beginOperation(String kind, String sql, Object[] bindArgs) {
             synchronized (mOperations) {
                 final int index = (mIndex + 1) % MAX_RECENT_OPERATIONS;
                 Operation operation = mOperations[index];
@@ -995,47 +1036,54 @@
                         }
                     }
                 }
+                operation.mCookie = newOperationCookieLocked(index);
                 mIndex = index;
+                return operation.mCookie;
             }
         }
 
-        public void failOperation(Exception ex) {
+        public void failOperation(int cookie, Exception ex) {
             synchronized (mOperations) {
-                final Operation operation =  mOperations[mIndex];
-                operation.mException = ex;
-            }
-        }
-
-        public boolean endOperationDeferLog() {
-            synchronized (mOperations) {
-                return endOperationDeferLogLocked();
-            }
-        }
-
-        private boolean endOperationDeferLogLocked() {
-            final Operation operation =  mOperations[mIndex];
-            operation.mEndTime = System.currentTimeMillis();
-            operation.mFinished = true;
-            return SQLiteDebug.DEBUG_LOG_SLOW_QUERIES && SQLiteDebug.shouldLogSlowQuery(
-                            operation.mEndTime - operation.mStartTime);
-        }
-
-        public void endOperation() {
-            synchronized (mOperations) {
-                if (endOperationDeferLogLocked()) {
-                    logOperationLocked(null);
+                final Operation operation = getOperationLocked(cookie);
+                if (operation != null) {
+                    operation.mException = ex;
                 }
             }
         }
 
-        public void logOperation(String detail) {
+        public void endOperation(int cookie) {
             synchronized (mOperations) {
-                logOperationLocked(detail);
+                if (endOperationDeferLogLocked(cookie)) {
+                    logOperationLocked(cookie, null);
+                }
             }
         }
 
-        private void logOperationLocked(String detail) {
-            final Operation operation =  mOperations[mIndex];
+        public boolean endOperationDeferLog(int cookie) {
+            synchronized (mOperations) {
+                return endOperationDeferLogLocked(cookie);
+            }
+        }
+
+        public void logOperation(int cookie, String detail) {
+            synchronized (mOperations) {
+                logOperationLocked(cookie, detail);
+            }
+        }
+
+        private boolean endOperationDeferLogLocked(int cookie) {
+            final Operation operation = getOperationLocked(cookie);
+            if (operation != null) {
+                operation.mEndTime = System.currentTimeMillis();
+                operation.mFinished = true;
+                return SQLiteDebug.DEBUG_LOG_SLOW_QUERIES && SQLiteDebug.shouldLogSlowQuery(
+                                operation.mEndTime - operation.mStartTime);
+            }
+            return false;
+        }
+
+        private void logOperationLocked(int cookie, String detail) {
+            final Operation operation = getOperationLocked(cookie);
             StringBuilder msg = new StringBuilder();
             operation.describe(msg);
             if (detail != null) {
@@ -1044,6 +1092,17 @@
             Log.d(TAG, msg.toString());
         }
 
+        private int newOperationCookieLocked(int index) {
+            final int generation = mGeneration++;
+            return generation << COOKIE_GENERATION_SHIFT | index;
+        }
+
+        private Operation getOperationLocked(int cookie) {
+            final int index = cookie & COOKIE_INDEX_MASK;
+            final Operation operation = mOperations[index];
+            return operation.mCookie == cookie ? operation : null;
+        }
+
         public String describeCurrentOperation() {
             synchronized (mOperations) {
                 final Operation operation = mOperations[mIndex];
@@ -1097,6 +1156,7 @@
         public ArrayList<Object> mBindArgs;
         public boolean mFinished;
         public Exception mException;
+        public int mCookie;
 
         public void describe(StringBuilder msg) {
             msg.append(mKind);
diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java
index b88bfee..5469213 100644
--- a/core/java/android/database/sqlite/SQLiteConnectionPool.java
+++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java
@@ -833,8 +833,9 @@
      * Dumps debugging information about this connection pool.
      *
      * @param printer The printer to receive the dump, not null.
+     * @param verbose True to dump more verbose information.
      */
-    public void dump(Printer printer) {
+    public void dump(Printer printer, boolean verbose) {
         Printer indentedPrinter = PrefixPrinter.create(printer, "    ");
         synchronized (mLock) {
             printer.println("Connection pool for " + mConfiguration.path + ":");
@@ -843,7 +844,7 @@
 
             printer.println("  Available primary connection:");
             if (mAvailablePrimaryConnection != null) {
-                mAvailablePrimaryConnection.dump(indentedPrinter);
+                mAvailablePrimaryConnection.dump(indentedPrinter, verbose);
             } else {
                 indentedPrinter.println("<none>");
             }
@@ -852,7 +853,7 @@
             if (!mAvailableNonPrimaryConnections.isEmpty()) {
                 final int count = mAvailableNonPrimaryConnections.size();
                 for (int i = 0; i < count; i++) {
-                    mAvailableNonPrimaryConnections.get(i).dump(indentedPrinter);
+                    mAvailableNonPrimaryConnections.get(i).dump(indentedPrinter, verbose);
                 }
             } else {
                 indentedPrinter.println("<none>");
@@ -863,7 +864,7 @@
                 for (Map.Entry<SQLiteConnection, Boolean> entry :
                         mAcquiredConnections.entrySet()) {
                     final SQLiteConnection connection = entry.getKey();
-                    connection.dumpUnsafe(indentedPrinter);
+                    connection.dumpUnsafe(indentedPrinter, verbose);
                     indentedPrinter.println("  Pending reconfiguration: " + entry.getValue());
                 }
             } else {
diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java
index 9dcb498..946300f 100644
--- a/core/java/android/database/sqlite/SQLiteCursor.java
+++ b/core/java/android/database/sqlite/SQLiteCursor.java
@@ -269,7 +269,6 @@
                         mStackTrace);
                 }
                 close();
-                SQLiteDebug.notifyActiveCursorFinalized();
             }
         } finally {
             super.finalize();
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 377a680..9cb6480 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -1665,17 +1665,17 @@
      * Dump detailed information about all open databases in the current process.
      * Used by bug report.
      */
-    static void dumpAll(Printer printer) {
+    static void dumpAll(Printer printer, boolean verbose) {
         for (SQLiteDatabase db : getActiveDatabases()) {
-            db.dump(printer);
+            db.dump(printer, verbose);
         }
     }
 
-    private void dump(Printer printer) {
+    private void dump(Printer printer, boolean verbose) {
         synchronized (mLock) {
             if (mConnectionPoolLocked != null) {
                 printer.println("");
-                mConnectionPoolLocked.dump(printer);
+                mConnectionPoolLocked.dump(printer, verbose);
             }
         }
     }
diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java
index d87c3e4..204483d 100644
--- a/core/java/android/database/sqlite/SQLiteDebug.java
+++ b/core/java/android/database/sqlite/SQLiteDebug.java
@@ -29,6 +29,8 @@
  * {@hide}
  */
 public final class SQLiteDebug {
+    private static native void nativeGetPagerStats(PagerStats stats);
+
     /**
      * Controls the printing of informational SQL log messages.
      */
@@ -49,31 +51,6 @@
             Log.isLoggable("SQLiteTime", Log.VERBOSE);
 
     /**
-     * Controls the printing of compiled-sql-statement cache stats.
-     */
-    public static final boolean DEBUG_SQL_CACHE =
-            Log.isLoggable("SQLiteCompiledSql", Log.VERBOSE);
-
-    /**
-     * Controls the stack trace reporting of active cursors being
-     * finalized.
-     */
-    public static final boolean DEBUG_ACTIVE_CURSOR_FINALIZATION =
-            Log.isLoggable("SQLiteCursorClosing", Log.VERBOSE);
-
-    /**
-     * Controls the tracking of time spent holding the database lock.
-     */
-    public static final boolean DEBUG_LOCK_TIME_TRACKING =
-            Log.isLoggable("SQLiteLockTime", Log.VERBOSE);
-
-    /**
-     * Controls the printing of stack traces when tracking the time spent holding the database lock.
-     */
-    public static final boolean DEBUG_LOCK_TIME_TRACKING_STACK_TRACE =
-            Log.isLoggable("SQLiteLockStackTrace", Log.VERBOSE);
-
-    /**
      * True to enable database performance testing instrumentation.
      * @hide
      */
@@ -98,30 +75,9 @@
     /**
      * Contains statistics about the active pagers in the current process.
      *
-     * @see #getPagerStats(PagerStats)
+     * @see #nativeGetPagerStats(PagerStats)
      */
     public static class PagerStats {
-        /** The total number of bytes in all pagers in the current process
-         * @deprecated not used any longer
-         */
-        @Deprecated
-        public long totalBytes;
-        /** The number of bytes in referenced pages in all pagers in the current process
-         * @deprecated not used any longer
-         * */
-        @Deprecated
-        public long referencedBytes;
-        /** The number of bytes in all database files opened in the current process
-         * @deprecated not used any longer
-         */
-        @Deprecated
-        public long databaseBytes;
-        /** The number of pagers opened in the current process
-         * @deprecated not used any longer
-         */
-        @Deprecated
-        public int numPagers;
-
         /** the current amount of memory checked out by sqlite using sqlite3_malloc().
          * documented at http://www.sqlite.org/c3ref/c_status_malloc_size.html
          */
@@ -134,7 +90,7 @@
          * that overflowed because no space was left in the page cache.
          * documented at http://www.sqlite.org/c3ref/c_status_malloc_size.html
          */
-        public int pageCacheOverflo;
+        public int pageCacheOverflow;
 
         /** records the largest memory allocation request handed to sqlite3.
          * documented at http://www.sqlite.org/c3ref/c_status_malloc_size.html
@@ -182,7 +138,7 @@
      */
     public static PagerStats getDatabaseInfo() {
         PagerStats stats = new PagerStats();
-        getPagerStats(stats);
+        nativeGetPagerStats(stats);
         stats.dbStats = SQLiteDatabase.getDbStats();
         return stats;
     }
@@ -190,52 +146,16 @@
     /**
      * Dumps detailed information about all databases used by the process.
      * @param printer The printer for dumping database state.
+     * @param args Command-line arguments supplied to dumpsys dbinfo
      */
     public static void dump(Printer printer, String[] args) {
-        SQLiteDatabase.dumpAll(printer);
-    }
+        boolean verbose = false;
+        for (String arg : args) {
+            if (arg.equals("-v")) {
+                verbose = true;
+            }
+        }
 
-    /**
-     * Gathers statistics about all pagers in the current process.
-     */
-    public static native void getPagerStats(PagerStats stats);
-
-    /**
-     * Returns the size of the SQLite heap.
-     * @return The size of the SQLite heap in bytes.
-     */
-    public static native long getHeapSize();
-
-    /**
-     * Returns the amount of allocated memory in the SQLite heap.
-     * @return The allocated size in bytes.
-     */
-    public static native long getHeapAllocatedSize();
-
-    /**
-     * Returns the amount of free memory in the SQLite heap.
-     * @return The freed size in bytes.
-     */
-    public static native long getHeapFreeSize();
-
-    /**
-     * Determines the number of dirty belonging to the SQLite
-     * heap segments of this process.  pages[0] returns the number of
-     * shared pages, pages[1] returns the number of private pages
-     */
-    public static native void getHeapDirtyPages(int[] pages);
-
-    private static int sNumActiveCursorsFinalized = 0;
-
-    /**
-     * Returns the number of active cursors that have been finalized. This depends on the GC having
-     * run but is still useful for tests.
-     */
-    public static int getNumActiveCursorsFinalized() {
-        return sNumActiveCursorsFinalized;
-    }
-
-    static synchronized void notifyActiveCursorFinalized() {
-        sNumActiveCursorsFinalized++;
+        SQLiteDatabase.dumpAll(printer, verbose);
     }
 }
diff --git a/core/java/android/database/sqlite/SQLiteGlobal.java b/core/java/android/database/sqlite/SQLiteGlobal.java
index 5e129be..dbefd63 100644
--- a/core/java/android/database/sqlite/SQLiteGlobal.java
+++ b/core/java/android/database/sqlite/SQLiteGlobal.java
@@ -22,57 +22,35 @@
  * Provides access to SQLite functions that affect all database connection,
  * such as memory management.
  *
+ * The native code associated with SQLiteGlobal is also sets global configuration options
+ * using sqlite3_config() then calls sqlite3_initialize() to ensure that the SQLite
+ * library is properly initialized exactly once before any other framework or application
+ * code has a chance to run.
+ *
+ * Verbose SQLite logging is enabled if the "log.tag.SQLiteLog" property is set to "V".
+ * (per {@link SQLiteDebug#DEBUG_SQL_LOG}).
+ *
  * @hide
  */
 public final class SQLiteGlobal {
     private static final String TAG = "SQLiteGlobal";
 
     private static final Object sLock = new Object();
-    private static boolean sInitialized;
-    private static int sSoftHeapLimit;
     private static int sDefaultPageSize;
 
-    private static native void nativeConfig(boolean verboseLog, int softHeapLimit);
-    private static native int nativeReleaseMemory(int bytesToFree);
+    private static native int nativeReleaseMemory();
 
     private SQLiteGlobal() {
     }
 
     /**
-     * Initializes global SQLite settings the first time it is called.
-     * Should be called before opening the first (or any) database.
-     * Does nothing on repeated subsequent calls.
-     */
-    public static void initializeOnce() {
-        synchronized (sLock) {
-            if (!sInitialized) {
-                sInitialized = true;
-
-                // Limit to 8MB for now.  This is 4 times the maximum cursor window
-                // size, as has been used by the original code in SQLiteDatabase for
-                // a long time.
-                // TODO: We really do need to test whether this helps or hurts us.
-                sSoftHeapLimit = 8 * 1024 * 1024;
-
-                // Configure SQLite.
-                nativeConfig(SQLiteDebug.DEBUG_SQL_LOG, sSoftHeapLimit);
-            }
-        }
-    }
-
-    /**
      * Attempts to release memory by pruning the SQLite page cache and other
      * internal data structures.
      *
      * @return The number of bytes that were freed.
      */
     public static int releaseMemory() {
-        synchronized (sLock) {
-            if (!sInitialized) {
-                return 0;
-            }
-            return nativeReleaseMemory(sSoftHeapLimit);
-        }
+        return nativeReleaseMemory();
     }
 
     /**
diff --git a/core/java/android/database/sqlite/SQLiteOpenHelper.java b/core/java/android/database/sqlite/SQLiteOpenHelper.java
index 31da7e4..46d9369 100644
--- a/core/java/android/database/sqlite/SQLiteOpenHelper.java
+++ b/core/java/android/database/sqlite/SQLiteOpenHelper.java
@@ -81,7 +81,8 @@
      * @param name of the database file, or null for an in-memory database
      * @param factory to use for creating cursor objects, or null for the default
      * @param version number of the database (starting at 1); if the database is older,
-     *     {@link #onUpgrade} will be used to upgrade the database
+     *     {@link #onUpgrade} will be used to upgrade the database; if the database is
+     *     newer, {@link #onDowngrade} will be used to downgrade the database
      * @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database
      * corruption.
      */
@@ -100,7 +101,7 @@
     }
 
     /**
-     * Return the name of the SQLite database being opened, as given tp
+     * Return the name of the SQLite database being opened, as given to
      * the constructor.
      */
     public String getDatabaseName() {
@@ -297,7 +298,7 @@
     public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
 
     /**
-     * Called when the database needs to be downgraded. This is stricly similar to
+     * Called when the database needs to be downgraded. This is strictly similar to
      * onUpgrade() method, but is called whenever current version is newer than requested one.
      * However, this method is not abstract, so it is not mandatory for a customer to
      * implement it. If not overridden, default implementation will reject downgrade and
diff --git a/core/java/android/database/sqlite/SQLiteSession.java b/core/java/android/database/sqlite/SQLiteSession.java
index 61fe45a..a933051 100644
--- a/core/java/android/database/sqlite/SQLiteSession.java
+++ b/core/java/android/database/sqlite/SQLiteSession.java
@@ -150,6 +150,12 @@
  * A query that works well on 100 rows may struggle with 10,000.</li>
  * </ul>
  *
+ * <h2>Reentrance</h2>
+ * <p>
+ * This class must tolerate reentrant execution of SQLite operations because
+ * triggers may call custom SQLite functions that perform additional queries.
+ * </p>
+ *
  * TODO: Support timeouts on all possibly blocking operations.
  *
  * @hide
@@ -159,6 +165,7 @@
 
     private SQLiteConnection mConnection;
     private int mConnectionFlags;
+    private int mConnectionUseCount;
     private Transaction mTransactionPool;
     private Transaction mTransactionStack;
 
@@ -289,7 +296,9 @@
 
     private void beginTransactionUnchecked(int transactionMode,
             SQLiteTransactionListener transactionListener, int connectionFlags) {
-        acquireConnectionIfNoTransaction(null, connectionFlags); // might throw
+        if (mTransactionStack == null) {
+            acquireConnection(null, connectionFlags); // might throw
+        }
         try {
             // Set up the transaction such that we can back out safely
             // in case we fail part way.
@@ -325,7 +334,9 @@
             transaction.mParent = mTransactionStack;
             mTransactionStack = transaction;
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            if (mTransactionStack == null) {
+                releaseConnection(); // might throw
+            }
         }
     }
 
@@ -408,7 +419,7 @@
                     mConnection.execute("ROLLBACK;", null); // might throw
                 }
             } finally {
-                releaseConnectionIfNoTransaction(); // might throw
+                releaseConnection(); // might throw
             }
         }
 
@@ -534,11 +545,11 @@
             throw new IllegalArgumentException("sql must not be null.");
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             mConnection.prepare(sql, outStatementInfo); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -562,11 +573,11 @@
             return;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             mConnection.execute(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -592,11 +603,11 @@
             return 0;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForLong(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -622,11 +633,11 @@
             return null;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForString(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -655,11 +666,11 @@
             return null;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForBlobFileDescriptor(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -685,11 +696,11 @@
             return 0;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForChangedRowCount(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -715,11 +726,11 @@
             return 0;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForLastInsertedRowId(sql, bindArgs); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -760,12 +771,12 @@
             return 0;
         }
 
-        acquireConnectionIfNoTransaction(sql, connectionFlags); // might throw
+        acquireConnection(sql, connectionFlags); // might throw
         try {
             return mConnection.executeForCursorWindow(sql, bindArgs,
                     window, startPos, requiredPos, countAllRows); // might throw
         } finally {
-            releaseConnectionIfNoTransaction(); // might throw
+            releaseConnection(); // might throw
         }
     }
 
@@ -807,16 +818,19 @@
         return false;
     }
 
-    private void acquireConnectionIfNoTransaction(String sql, int connectionFlags) {
-        if (mTransactionStack == null) {
-            assert mConnection == null;
+    private void acquireConnection(String sql, int connectionFlags) {
+        if (mConnection == null) {
+            assert mConnectionUseCount == 0;
             mConnection = mConnectionPool.acquireConnection(sql, connectionFlags); // might throw
             mConnectionFlags = connectionFlags;
         }
+        mConnectionUseCount += 1;
     }
 
-    private void releaseConnectionIfNoTransaction() {
-        if (mTransactionStack == null && mConnection != null) {
+    private void releaseConnection() {
+        assert mConnection != null;
+        assert mConnectionUseCount > 0;
+        if (--mConnectionUseCount == 0) {
             try {
                 mConnectionPool.releaseConnection(mConnection); // might throw
             } finally {
diff --git a/core/java/android/database/sqlite/SQLiteUnfinalizedObjectsException.java b/core/java/android/database/sqlite/SQLiteUnfinalizedObjectsException.java
deleted file mode 100644
index bcf95e2..0000000
--- a/core/java/android/database/sqlite/SQLiteUnfinalizedObjectsException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.database.sqlite;
-
-/**
- * Thrown if the database can't be closed because of some un-closed
- * Cursor or SQLiteStatement objects. Could happen when a thread is trying to close
- * the database while another thread still hasn't closed a Cursor on that database.
- * @hide
- */
-public class SQLiteUnfinalizedObjectsException extends SQLiteException {
-    public SQLiteUnfinalizedObjectsException() {}
-
-    public SQLiteUnfinalizedObjectsException(String error) {
-        super(error);
-    }
-}
diff --git a/core/java/android/inputmethodservice/ExtractEditText.java b/core/java/android/inputmethodservice/ExtractEditText.java
index 10c1195..23ae21b 100644
--- a/core/java/android/inputmethodservice/ExtractEditText.java
+++ b/core/java/android/inputmethodservice/ExtractEditText.java
@@ -100,6 +100,9 @@
     
     @Override public boolean onTextContextMenuItem(int id) {
         if (mIME != null && mIME.onExtractTextContextMenuItem(id)) {
+            // Mode was started on Extracted, needs to be stopped here.
+            // Cut and paste will change the text, which stops selection mode.
+            if (id == android.R.id.copy) stopSelectionActionMode();
             return true;
         }
         return super.onTextContextMenuItem(id);
diff --git a/core/java/android/nfc/LlcpPacket.java b/core/java/android/nfc/LlcpPacket.java
deleted file mode 100644
index 9919dc4..0000000
--- a/core/java/android/nfc/LlcpPacket.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.nfc;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Represents a LLCP packet received in a LLCP Connectionless communication;
- * @hide
- */
-public class LlcpPacket implements Parcelable {
-
-    private final int mRemoteSap;
-
-    private final byte[] mDataBuffer;
-
-    /**
-     * Creates a LlcpPacket to be sent to a remote Service Access Point number
-     * (SAP)
-     *
-     * @param sap Remote Service Access Point number
-     * @param data Data buffer
-     */
-    public LlcpPacket(int sap, byte[] data) {
-        mRemoteSap = sap;
-        mDataBuffer = data;
-    }
-
-    /**
-     * Returns the remote Service Access Point number
-     */
-    public int getRemoteSap() {
-        return mRemoteSap;
-    }
-
-    /**
-     * Returns the data buffer
-     */
-    public byte[] getDataBuffer() {
-        return mDataBuffer;
-    }
-
-    public int describeContents() {
-        return 0;
-    }
-
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(mRemoteSap);
-        dest.writeInt(mDataBuffer.length);
-        dest.writeByteArray(mDataBuffer);
-    }
-
-    public static final Parcelable.Creator<LlcpPacket> CREATOR = new Parcelable.Creator<LlcpPacket>() {
-        public LlcpPacket createFromParcel(Parcel in) {
-            // Remote SAP
-            short sap = (short)in.readInt();
-
-            // Data Buffer
-            int dataLength = in.readInt();
-            byte[] data = new byte[dataLength];
-            in.readByteArray(data);
-
-            return new LlcpPacket(sap, data);
-        }
-
-        public LlcpPacket[] newArray(int size) {
-            return new LlcpPacket[size];
-        }
-    };
-}
\ No newline at end of file
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 9a53d76..270e9be 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -45,4 +45,5 @@
     // sets the brightness of the backlights (screen, keyboard, button) 0-255
     void setBacklightBrightness(int brightness);
     void setAttentionLight(boolean on, int color);
+    void setAutoBrightnessAdjustment(float adj);
 }
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 0202c47..ba9046c 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1401,6 +1401,12 @@
         public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
 
         /**
+         * Adjustment to auto-brightness to make it generally more (>0.0 <1.0)
+         * or less (<0.0 >-1.0) bright.
+         */
+        public static final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj";
+
+        /**
          * SCREEN_BRIGHTNESS_MODE value for manual mode.
          */
         public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = 0;
@@ -1927,6 +1933,7 @@
             SCREEN_OFF_TIMEOUT,
             SCREEN_BRIGHTNESS,
             SCREEN_BRIGHTNESS_MODE,
+            SCREEN_AUTO_BRIGHTNESS_ADJ,
             VIBRATE_ON,
             MODE_RINGER,
             MODE_RINGER_STREAMS_AFFECTED,
diff --git a/core/java/android/text/method/ArrowKeyMovementMethod.java b/core/java/android/text/method/ArrowKeyMovementMethod.java
index 4ec4bc4..30bb447 100644
--- a/core/java/android/text/method/ArrowKeyMovementMethod.java
+++ b/core/java/android/text/method/ArrowKeyMovementMethod.java
@@ -280,8 +280,6 @@
                 if (isSelecting(buffer)) {
                     buffer.removeSpan(LAST_TAP_DOWN);
                     Selection.extendSelection(buffer, offset);
-                } else if (!widget.shouldIgnoreActionUpEvent()) {
-                    Selection.setSelection(buffer, offset);
                 }
 
                 MetaKeyKeyListener.adjustMetaAfterKeypress(buffer);
diff --git a/core/java/android/util/LocalLog.java b/core/java/android/util/LocalLog.java
new file mode 100644
index 0000000..641d1b4
--- /dev/null
+++ b/core/java/android/util/LocalLog.java
@@ -0,0 +1,56 @@
+/*
+ * 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 android.util;
+
+import android.text.format.Time;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/**
+ * @hide
+ */
+public final class LocalLog {
+
+    private LinkedList<String> mLog;
+    private int mMaxLines;
+    private Time mNow;
+
+    public LocalLog(int maxLines) {
+        mLog = new LinkedList<String>();
+        mMaxLines = maxLines;
+        mNow = new Time();
+    }
+
+    public synchronized void log(String msg) {
+        if (mMaxLines > 0) {
+            mNow.setToNow();
+            mLog.add(mNow.format("%H:%M:%S") + " - " + msg);
+            while (mLog.size() > mMaxLines) mLog.remove();
+        }
+    }
+
+    public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        Iterator<String> itr = mLog.listIterator(0);
+        while (itr.hasNext()) {
+            pw.println(itr.next());
+        }
+    }
+}
diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java
index 761a788..e06d661 100644
--- a/core/java/android/view/GLES20Canvas.java
+++ b/core/java/android/view/GLES20Canvas.java
@@ -908,17 +908,42 @@
 
     @Override
     public void drawPicture(Picture picture) {
-        throw new UnsupportedOperationException();
+        if (picture.createdFromStream) {
+            return;
+        }
+
+        picture.endRecording();
+        // TODO: Implement rendering
     }
 
     @Override
     public void drawPicture(Picture picture, Rect dst) {
-        throw new UnsupportedOperationException();
+        if (picture.createdFromStream) {
+            return;
+        }
+
+        save();
+        translate(dst.left, dst.top);
+        if (picture.getWidth() > 0 && picture.getHeight() > 0) {
+            scale(dst.width() / picture.getWidth(), dst.height() / picture.getHeight());
+        }
+        drawPicture(picture);
+        restore();
     }
 
     @Override
     public void drawPicture(Picture picture, RectF dst) {
-        throw new UnsupportedOperationException();
+        if (picture.createdFromStream) {
+            return;
+        }
+
+        save();
+        translate(dst.left, dst.top);
+        if (picture.getWidth() > 0 && picture.getHeight() > 0) {
+            scale(dst.width() / picture.getWidth(), dst.height() / picture.getHeight());
+        }
+        drawPicture(picture);
+        restore();
     }
 
     @Override
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 93a9d50..c54d09e 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -229,4 +229,9 @@
      * Device has a software navigation bar (separate from the status bar).
      */
     boolean hasNavigationBar();
+
+    /**
+     * Lock the device immediately.
+     */
+    void lockNow();
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index a9d6cdf..8cac57d 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7996,84 +7996,6 @@
     }
 
     /**
-     * @hide
-     */
-    public void setFastTranslationX(float x) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mTranslationX = x;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastTranslationY(float y) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mTranslationY = y;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastX(float x) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mTranslationX = x - mLeft;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastY(float y) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mTranslationY = y - mTop;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastScaleX(float x) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mScaleX = x;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastScaleY(float y) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mScaleY = y;
-        info.mMatrixDirty = true;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastAlpha(float alpha) {
-        ensureTransformationInfo();
-        mTransformationInfo.mAlpha = alpha;
-    }
-
-    /**
-     * @hide
-     */
-    public void setFastRotationY(float y) {
-        ensureTransformationInfo();
-        final TransformationInfo info = mTransformationInfo;
-        info.mRotationY = y;
-        info.mMatrixDirty = true;
-    }
-
-    /**
      * Hit rectangle in parent's coordinates
      *
      * @param outRect The hit rectangle of the view.
@@ -8650,37 +8572,6 @@
     }
 
     /**
-     * @hide
-     */
-    public void fastInvalidate() {
-        if (skipInvalidate()) {
-            return;
-        }
-        if ((mPrivateFlags & (DRAWN | HAS_BOUNDS)) == (DRAWN | HAS_BOUNDS) ||
-            (mPrivateFlags & DRAWING_CACHE_VALID) == DRAWING_CACHE_VALID ||
-            (mPrivateFlags & INVALIDATED) != INVALIDATED) {
-            if (mParent instanceof View) {
-                ((View) mParent).mPrivateFlags |= INVALIDATED;
-            }
-            mPrivateFlags &= ~DRAWN;
-            mPrivateFlags |= DIRTY;
-            mPrivateFlags |= INVALIDATED;
-            mPrivateFlags &= ~DRAWING_CACHE_VALID;
-            if (mParent != null && mAttachInfo != null) {
-                if (mAttachInfo.mHardwareAccelerated) {
-                    mParent.invalidateChild(this, null);
-                } else {
-                    final Rect r = mAttachInfo.mTmpInvalRect;
-                    r.set(0, 0, mRight - mLeft, mBottom - mTop);
-                    // Don't call invalidate -- we don't want to internally scroll
-                    // our own bounds
-                    mParent.invalidateChild(this, r);
-                }
-            }
-        }
-    }
-
-    /**
      * Used to indicate that the parent of this view should clear its caches. This functionality
      * is used to force the parent to rebuild its display list (when hardware-accelerated),
      * which is necessary when various parent-managed properties of the view change, such as
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index c53fc6b..7fd3389 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -185,7 +185,8 @@
             mTouchableInsets = TOUCHABLE_INSETS_FRAME;
         }
         
-        @Override public boolean equals(Object o) {
+        @Override
+        public boolean equals(Object o) {
             try {
                 if (o == null) {
                     return false;
@@ -357,10 +358,26 @@
      * @param victim The callback to remove
      *
      * @throws IllegalStateException If {@link #isAlive()} returns false
+     * 
+     * @deprecated Use #removeOnGlobalLayoutListener instead
      *
      * @see #addOnGlobalLayoutListener(OnGlobalLayoutListener)
      */
+    @Deprecated
     public void removeGlobalOnLayoutListener(OnGlobalLayoutListener victim) {
+        removeOnGlobalLayoutListener(victim);
+    }
+
+    /**
+     * Remove a previously installed global layout callback
+     *
+     * @param victim The callback to remove
+     *
+     * @throws IllegalStateException If {@link #isAlive()} returns false
+     * 
+     * @see #addOnGlobalLayoutListener(OnGlobalLayoutListener)
+     */
+    public void removeOnGlobalLayoutListener(OnGlobalLayoutListener victim) {
         checkIsAlive();
         if (mOnGlobalLayoutListeners == null) {
             return;
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 994565a..6ec2e8d 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -1029,6 +1029,11 @@
     public boolean hasNavigationBar();
 
     /**
+     * Lock the device now.
+     */
+    public void lockNow();
+
+    /**
      * Print the WindowManagerPolicy's state into the given stream.
      *
      * @param prefix Text to print at the front of each line.
diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java
index c3c74a7..c28b220 100755
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/core/java/android/view/WindowOrientationListener.java
@@ -21,6 +21,7 @@
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
+import android.util.FloatMath;
 import android.util.Log;
 import android.util.Slog;
 
@@ -48,6 +49,8 @@
     private static final boolean DEBUG = false;
     private static final boolean localLOGV = DEBUG || false;
 
+    private static final boolean USE_GRAVITY_SENSOR = false;
+
     private SensorManager mSensorManager;
     private boolean mEnabled;
     private int mRate;
@@ -79,7 +82,8 @@
     private WindowOrientationListener(Context context, int rate) {
         mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
         mRate = rate;
-        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+        mSensor = mSensorManager.getDefaultSensor(USE_GRAVITY_SENSOR
+                ? Sensor.TYPE_GRAVITY : Sensor.TYPE_ACCELEROMETER);
         if (mSensor != null) {
             // Create listener only if sensors do exist
             mSensorEventListener = new SensorEventListenerImpl(this);
@@ -179,7 +183,7 @@
      *    cartesian space because the orientation calculations are sensitive to the
      *    absolute magnitude of the acceleration.  In particular, there are singularities
      *    in the calculation as the magnitude approaches 0.  By performing the low-pass
-     *    filtering early, we can eliminate high-frequency impulses systematically.
+     *    filtering early, we can eliminate most spurious high-frequency impulses due to noise.
      *
      *  - Convert the acceleromter vector from cartesian to spherical coordinates.
      *    Since we're dealing with rotation of the device, this is the sensible coordinate
@@ -204,11 +208,17 @@
      *    new orientation proposal.
      *
      * Details are explained inline.
+     *
+     * See http://en.wikipedia.org/wiki/Low-pass_filter#Discrete-time_realization for
+     * signal processing background.
      */
     static final class SensorEventListenerImpl implements SensorEventListener {
         // We work with all angles in degrees in this class.
         private static final float RADIANS_TO_DEGREES = (float) (180 / Math.PI);
 
+        // Number of nanoseconds per millisecond.
+        private static final long NANOS_PER_MS = 1000000;
+
         // Indices into SensorEvent.values for the accelerometer sensor.
         private static final int ACCELEROMETER_DATA_X = 0;
         private static final int ACCELEROMETER_DATA_Y = 1;
@@ -216,38 +226,41 @@
 
         private final WindowOrientationListener mOrientationListener;
 
-        /* State for first order low-pass filtering of accelerometer data.
-         * See http://en.wikipedia.org/wiki/Low-pass_filter#Discrete-time_realization for
-         * signal processing background.
-         */
+        // The minimum amount of time that a predicted rotation must be stable before it
+        // is accepted as a valid rotation proposal.  This value can be quite small because
+        // the low-pass filter already suppresses most of the noise so we're really just
+        // looking for quick confirmation that the last few samples are in agreement as to
+        // the desired orientation.
+        private static final long PROPOSAL_SETTLE_TIME_NANOS = 40 * NANOS_PER_MS;
 
-        private long mLastTimestamp = Long.MAX_VALUE; // in nanoseconds
-        private float mLastFilteredX, mLastFilteredY, mLastFilteredZ;
+        // The minimum amount of time that must have elapsed since the device last exited
+        // the flat state (time since it was picked up) before the proposed rotation
+        // can change.
+        private static final long PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS = 500 * NANOS_PER_MS;
 
-        // The current proposal.  We wait for the proposal to be stable for a
-        // certain amount of time before accepting it.
-        //
-        // The basic idea is to ignore intermediate poses of the device while the
-        // user is picking up, putting down or turning the device.
-        private int mProposalRotation;
-        private long mProposalAgeMS;
+        // The mininum amount of time that must have elapsed since the device stopped
+        // swinging (time since device appeared to be in the process of being put down
+        // or put away into a pocket) before the proposed rotation can change.
+        private static final long PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS = 300 * NANOS_PER_MS;
 
-        // A historical trace of tilt and orientation angles.  Used to determine whether
-        // the device posture has settled down.
-        private static final int HISTORY_SIZE = 20;
-        private int mHistoryIndex; // index of most recent sample
-        private int mHistoryLength; // length of historical trace
-        private final long[] mHistoryTimestampMS = new long[HISTORY_SIZE];
-        private final float[] mHistoryMagnitudes = new float[HISTORY_SIZE];
-        private final int[] mHistoryTiltAngles = new int[HISTORY_SIZE];
-        private final int[] mHistoryOrientationAngles = new int[HISTORY_SIZE];
+        // If the tilt angle remains greater than the specified angle for a minimum of
+        // the specified time, then the device is deemed to be lying flat
+        // (just chillin' on a table).
+        private static final float FLAT_ANGLE = 75;
+        private static final long FLAT_TIME_NANOS = 1000 * NANOS_PER_MS;
+
+        // If the tilt angle has increased by at least delta degrees within the specified amount
+        // of time, then the device is deemed to be swinging away from the user
+        // down towards flat (tilt = 90).
+        private static final float SWING_AWAY_ANGLE_DELTA = 20;
+        private static final long SWING_TIME_NANOS = 300 * NANOS_PER_MS;
 
         // The maximum sample inter-arrival time in milliseconds.
         // If the acceleration samples are further apart than this amount in time, we reset the
         // state of the low-pass filter and orientation properties.  This helps to handle
         // boundary conditions when the device is turned on, wakes from suspend or there is
         // a significant gap in samples.
-        private static final float MAX_FILTER_DELTA_TIME_MS = 1000;
+        private static final long MAX_FILTER_DELTA_TIME_NANOS = 1000 * NANOS_PER_MS;
 
         // The acceleration filter time constant.
         //
@@ -267,8 +280,10 @@
         //
         // Filtering adds latency proportional the time constant (inversely proportional
         // to the cutoff frequency) so we don't want to make the time constant too
-        // large or we can lose responsiveness.
-        private static final float FILTER_TIME_CONSTANT_MS = 100.0f;
+        // large or we can lose responsiveness.  Likewise we don't want to make it too
+        // small or we do a poor job suppressing acceleration spikes.
+        // Empirically, 100ms seems to be too small and 500ms is too large.
+        private static final float FILTER_TIME_CONSTANT_MS = 200.0f;
 
         /* State for orientation detection. */
 
@@ -286,9 +301,9 @@
         //
         // In both cases, we postpone choosing an orientation.
         private static final float MIN_ACCELERATION_MAGNITUDE =
-                SensorManager.STANDARD_GRAVITY * 0.5f;
+                SensorManager.STANDARD_GRAVITY * 0.3f;
         private static final float MAX_ACCELERATION_MAGNITUDE =
-            SensorManager.STANDARD_GRAVITY * 1.5f;
+            SensorManager.STANDARD_GRAVITY * 1.25f;
 
         // Maximum absolute tilt angle at which to consider orientation data.  Beyond this (i.e.
         // when screen is facing the sky or ground), we completely ignore orientation data.
@@ -306,10 +321,10 @@
         // The ideal tilt angle is 0 (when the device is vertical) so the limits establish
         // how close to vertical the device must be in order to change orientation.
         private static final int[][] TILT_TOLERANCE = new int[][] {
-            /* ROTATION_0   */ { -20, 70 },
-            /* ROTATION_90  */ { -20, 60 },
-            /* ROTATION_180 */ { -20, 50 },
-            /* ROTATION_270 */ { -20, 60 }
+            /* ROTATION_0   */ { -25, 70 },
+            /* ROTATION_90  */ { -25, 65 },
+            /* ROTATION_180 */ { -25, 60 },
+            /* ROTATION_270 */ { -25, 65 }
         };
 
         // The gap angle in degrees between adjacent orientation angles for hysteresis.
@@ -319,29 +334,38 @@
         // orientation.
         private static final int ADJACENT_ORIENTATION_ANGLE_GAP = 45;
 
-        // The number of milliseconds for which the device posture must be stable
-        // before we perform an orientation change.  If the device appears to be rotating
-        // (being picked up, put down) then we keep waiting until it settles.
-        private static final int SETTLE_TIME_MS = 200;
+        // Timestamp and value of the last accelerometer sample.
+        private long mLastFilteredTimestampNanos;
+        private float mLastFilteredX, mLastFilteredY, mLastFilteredZ;
 
-        // The maximum change in magnitude that can occur during the settle time.
-        // Tuning this constant particularly helps to filter out situations where the
-        // device is being picked up or put down by the user.
-        private static final float SETTLE_MAGNITUDE_MAX_DELTA =
-                SensorManager.STANDARD_GRAVITY * 0.2f;
+        // The last proposed rotation, -1 if unknown.
+        private int mProposedRotation;
 
-        // The maximum change in tilt angle that can occur during the settle time.
-        private static final int SETTLE_TILT_ANGLE_MAX_DELTA = 5;
+        // Value of the current predicted rotation, -1 if unknown.
+        private int mPredictedRotation;
 
-        // The maximum change in orientation angle that can occur during the settle time.
-        private static final int SETTLE_ORIENTATION_ANGLE_MAX_DELTA = 5;
+        // Timestamp of when the predicted rotation most recently changed.
+        private long mPredictedRotationTimestampNanos;
+
+        // Timestamp when the device last appeared to be flat for sure (the flat delay elapsed).
+        private long mFlatTimestampNanos;
+
+        // Timestamp when the device last appeared to be swinging.
+        private long mSwingTimestampNanos;
+
+        // History of observed tilt angles.
+        private static final int TILT_HISTORY_SIZE = 40;
+        private float[] mTiltHistory = new float[TILT_HISTORY_SIZE];
+        private long[] mTiltHistoryTimestampNanos = new long[TILT_HISTORY_SIZE];
+        private int mTiltHistoryIndex;
 
         public SensorEventListenerImpl(WindowOrientationListener orientationListener) {
             mOrientationListener = orientationListener;
+            reset();
         }
 
         public int getProposedRotation() {
-            return mProposalAgeMS >= SETTLE_TIME_MS ? mProposalRotation : -1;
+            return mProposedRotation;
         }
 
         @Override
@@ -359,8 +383,9 @@
             float z = event.values[ACCELEROMETER_DATA_Z];
 
             if (log) {
-                Slog.v(TAG, "Raw acceleration vector: " +
-                        "x=" + x + ", y=" + y + ", z=" + z);
+                Slog.v(TAG, "Raw acceleration vector: "
+                        + "x=" + x + ", y=" + y + ", z=" + z
+                        + ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
             }
 
             // Apply a low-pass filter to the acceleration up vector in cartesian space.
@@ -368,14 +393,16 @@
             // or when we see values of (0, 0, 0) which indicates that we polled the
             // accelerometer too soon after turning it on and we don't have any data yet.
             final long now = event.timestamp;
-            final float timeDeltaMS = (now - mLastTimestamp) * 0.000001f;
-            boolean skipSample;
-            if (timeDeltaMS <= 0 || timeDeltaMS > MAX_FILTER_DELTA_TIME_MS
+            final long then = mLastFilteredTimestampNanos;
+            final float timeDeltaMS = (now - then) * 0.000001f;
+            final boolean skipSample;
+            if (now < then
+                    || now > then + MAX_FILTER_DELTA_TIME_NANOS
                     || (x == 0 && y == 0 && z == 0)) {
                 if (log) {
                     Slog.v(TAG, "Resetting orientation listener.");
                 }
-                clearProposal();
+                reset();
                 skipSample = true;
             } else {
                 final float alpha = timeDeltaMS / (FILTER_TIME_CONSTANT_MS + timeDeltaMS);
@@ -383,27 +410,28 @@
                 y = alpha * (y - mLastFilteredY) + mLastFilteredY;
                 z = alpha * (z - mLastFilteredZ) + mLastFilteredZ;
                 if (log) {
-                    Slog.v(TAG, "Filtered acceleration vector: " +
-                            "x=" + x + ", y=" + y + ", z=" + z);
+                    Slog.v(TAG, "Filtered acceleration vector: "
+                            + "x=" + x + ", y=" + y + ", z=" + z
+                            + ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
                 }
                 skipSample = false;
             }
-            mLastTimestamp = now;
+            mLastFilteredTimestampNanos = now;
             mLastFilteredX = x;
             mLastFilteredY = y;
             mLastFilteredZ = z;
 
-            final int oldProposedRotation = getProposedRotation();
+            boolean isFlat = false;
+            boolean isSwinging = false;
             if (!skipSample) {
                 // Calculate the magnitude of the acceleration vector.
-                final float magnitude = (float) Math.sqrt(x * x + y * y + z * z);
+                final float magnitude = FloatMath.sqrt(x * x + y * y + z * z);
                 if (magnitude < MIN_ACCELERATION_MAGNITUDE
                         || magnitude > MAX_ACCELERATION_MAGNITUDE) {
                     if (log) {
-                        Slog.v(TAG, "Ignoring sensor data, magnitude out of range: "
-                                + "magnitude=" + magnitude);
+                        Slog.v(TAG, "Ignoring sensor data, magnitude out of range.");
                     }
-                    clearProposal();
+                    clearPredictedRotation();
                 } else {
                     // Calculate the tilt angle.
                     // This is the angle between the up vector and the x-y plane (the plane of
@@ -414,14 +442,25 @@
                     final int tiltAngle = (int) Math.round(
                             Math.asin(z / magnitude) * RADIANS_TO_DEGREES);
 
+                    // Determine whether the device appears to be flat or swinging.
+                    if (isFlat(now)) {
+                        isFlat = true;
+                        mFlatTimestampNanos = now;
+                    }
+                    if (isSwinging(now, tiltAngle)) {
+                        isSwinging = true;
+                        mSwingTimestampNanos = now;
+                    }
+                    addTiltHistoryEntry(now, tiltAngle);
+
                     // If the tilt angle is too close to horizontal then we cannot determine
                     // the orientation angle of the screen.
                     if (Math.abs(tiltAngle) > MAX_TILT) {
                         if (log) {
                             Slog.v(TAG, "Ignoring sensor data, tilt angle too high: "
-                                    + "magnitude=" + magnitude + ", tiltAngle=" + tiltAngle);
+                                    + "tiltAngle=" + tiltAngle);
                         }
-                        clearProposal();
+                        clearPredictedRotation();
                     } else {
                         // Calculate the orientation angle.
                         // This is the angle between the x-y projection of the up vector onto
@@ -439,89 +478,93 @@
                             nearestRotation = 0;
                         }
 
-                        // Determine the proposed orientation.
-                        // The confidence of the proposal is 1.0 when it is ideal and it
-                        // decays exponentially as the proposal moves further from the ideal
-                        // angle, tilt and magnitude of the proposed orientation.
-                        if (!isTiltAngleAcceptable(nearestRotation, tiltAngle)
-                                || !isOrientationAngleAcceptable(nearestRotation,
+                        // Determine the predicted orientation.
+                        if (isTiltAngleAcceptable(nearestRotation, tiltAngle)
+                                && isOrientationAngleAcceptable(nearestRotation,
                                         orientationAngle)) {
+                            updatePredictedRotation(now, nearestRotation);
                             if (log) {
-                                Slog.v(TAG, "Ignoring sensor data, no proposal: "
-                                        + "magnitude=" + magnitude + ", tiltAngle=" + tiltAngle
-                                        + ", orientationAngle=" + orientationAngle);
+                                Slog.v(TAG, "Predicted: "
+                                        + "tiltAngle=" + tiltAngle
+                                        + ", orientationAngle=" + orientationAngle
+                                        + ", predictedRotation=" + mPredictedRotation
+                                        + ", predictedRotationAgeMS="
+                                                + ((now - mPredictedRotationTimestampNanos)
+                                                        * 0.000001f));
                             }
-                            clearProposal();
                         } else {
                             if (log) {
-                                Slog.v(TAG, "Proposal: "
-                                        + "magnitude=" + magnitude
-                                        + ", tiltAngle=" + tiltAngle
-                                        + ", orientationAngle=" + orientationAngle
-                                        + ", proposalRotation=" + mProposalRotation);
+                                Slog.v(TAG, "Ignoring sensor data, no predicted rotation: "
+                                        + "tiltAngle=" + tiltAngle
+                                        + ", orientationAngle=" + orientationAngle);
                             }
-                            updateProposal(nearestRotation, now / 1000000L,
-                                    magnitude, tiltAngle, orientationAngle);
+                            clearPredictedRotation();
                         }
                     }
                 }
             }
 
+            // Determine new proposed rotation.
+            final int oldProposedRotation = mProposedRotation;
+            if (mPredictedRotation < 0 || isPredictedRotationAcceptable(now)) {
+                mProposedRotation = mPredictedRotation;
+            }
+
             // Write final statistics about where we are in the orientation detection process.
-            final int proposedRotation = getProposedRotation();
             if (log) {
-                final float proposalConfidence = Math.min(
-                        mProposalAgeMS * 1.0f / SETTLE_TIME_MS, 1.0f);
                 Slog.v(TAG, "Result: currentRotation=" + mOrientationListener.mCurrentRotation
-                        + ", proposedRotation=" + proposedRotation
+                        + ", proposedRotation=" + mProposedRotation
+                        + ", predictedRotation=" + mPredictedRotation
                         + ", timeDeltaMS=" + timeDeltaMS
-                        + ", proposalRotation=" + mProposalRotation
-                        + ", proposalAgeMS=" + mProposalAgeMS
-                        + ", proposalConfidence=" + proposalConfidence);
+                        + ", isFlat=" + isFlat
+                        + ", isSwinging=" + isSwinging
+                        + ", timeUntilSettledMS=" + remainingMS(now,
+                                mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS)
+                        + ", timeUntilFlatDelayExpiredMS=" + remainingMS(now,
+                                mFlatTimestampNanos + PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS)
+                        + ", timeUntilSwingDelayExpiredMS=" + remainingMS(now,
+                                mSwingTimestampNanos + PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS));
             }
 
             // Tell the listener.
-            if (proposedRotation != oldProposedRotation && proposedRotation >= 0) {
+            if (mProposedRotation != oldProposedRotation && mProposedRotation >= 0) {
                 if (log) {
-                    Slog.v(TAG, "Proposed rotation changed!  proposedRotation=" + proposedRotation
+                    Slog.v(TAG, "Proposed rotation changed!  proposedRotation=" + mProposedRotation
                             + ", oldProposedRotation=" + oldProposedRotation);
                 }
-                mOrientationListener.onProposedRotationChanged(proposedRotation);
+                mOrientationListener.onProposedRotationChanged(mProposedRotation);
             }
         }
 
         /**
-         * Returns true if the tilt angle is acceptable for a proposed
-         * orientation transition.
+         * Returns true if the tilt angle is acceptable for a given predicted rotation.
          */
-        private boolean isTiltAngleAcceptable(int proposedRotation,
-                int tiltAngle) {
-            return tiltAngle >= TILT_TOLERANCE[proposedRotation][0]
-                    && tiltAngle <= TILT_TOLERANCE[proposedRotation][1];
+        private boolean isTiltAngleAcceptable(int rotation, int tiltAngle) {
+            return tiltAngle >= TILT_TOLERANCE[rotation][0]
+                    && tiltAngle <= TILT_TOLERANCE[rotation][1];
         }
 
         /**
-         * Returns true if the orientation angle is acceptable for a proposed
-         * orientation transition.
+         * Returns true if the orientation angle is acceptable for a given predicted rotation.
          *
          * This function takes into account the gap between adjacent orientations
          * for hysteresis.
          */
-        private boolean isOrientationAngleAcceptable(int proposedRotation, int orientationAngle) {
+        private boolean isOrientationAngleAcceptable(int rotation, int orientationAngle) {
             // If there is no current rotation, then there is no gap.
             // The gap is used only to introduce hysteresis among advertised orientation
             // changes to avoid flapping.
             final int currentRotation = mOrientationListener.mCurrentRotation;
             if (currentRotation >= 0) {
-                // If the proposed rotation is the same or is counter-clockwise adjacent,
-                // then we set a lower bound on the orientation angle.
+                // If the specified rotation is the same or is counter-clockwise adjacent
+                // to the current rotation, then we set a lower bound on the orientation angle.
                 // For example, if currentRotation is ROTATION_0 and proposed is ROTATION_90,
                 // then we want to check orientationAngle > 45 + GAP / 2.
-                if (proposedRotation == currentRotation
-                        || proposedRotation == (currentRotation + 1) % 4) {
-                    int lowerBound = proposedRotation * 90 - 45
+                if (rotation == currentRotation
+                        || rotation == (currentRotation + 1) % 4) {
+                    int lowerBound = rotation * 90 - 45
                             + ADJACENT_ORIENTATION_ANGLE_GAP / 2;
-                    if (proposedRotation == 0) {
+                    if (rotation == 0) {
                         if (orientationAngle >= 315 && orientationAngle < lowerBound + 360) {
                             return false;
                         }
@@ -532,15 +575,15 @@
                     }
                 }
 
-                // If the proposed rotation is the same or is clockwise adjacent,
+                // If the specified rotation is the same or is clockwise adjacent,
                 // then we set an upper bound on the orientation angle.
-                // For example, if currentRotation is ROTATION_0 and proposed is ROTATION_270,
+                // For example, if currentRotation is ROTATION_0 and rotation is ROTATION_270,
                 // then we want to check orientationAngle < 315 - GAP / 2.
-                if (proposedRotation == currentRotation
-                        || proposedRotation == (currentRotation + 3) % 4) {
-                    int upperBound = proposedRotation * 90 + 45
+                if (rotation == currentRotation
+                        || rotation == (currentRotation + 3) % 4) {
+                    int upperBound = rotation * 90 + 45
                             - ADJACENT_ORIENTATION_ANGLE_GAP / 2;
-                    if (proposedRotation == 0) {
+                    if (rotation == 0) {
                         if (orientationAngle <= 45 && orientationAngle > upperBound) {
                             return false;
                         }
@@ -554,58 +597,97 @@
             return true;
         }
 
-        private void clearProposal() {
-            mProposalRotation = -1;
-            mProposalAgeMS = 0;
+        /**
+         * Returns true if the predicted rotation is ready to be advertised as a
+         * proposed rotation.
+         */
+        private boolean isPredictedRotationAcceptable(long now) {
+            // The predicted rotation must have settled long enough.
+            if (now < mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS) {
+                return false;
+            }
+
+            // The last flat state (time since picked up) must have been sufficiently long ago.
+            if (now < mFlatTimestampNanos + PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS) {
+                return false;
+            }
+
+            // The last swing state (time since last movement to put down) must have been
+            // sufficiently long ago.
+            if (now < mSwingTimestampNanos + PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS) {
+                return false;
+            }
+
+            // Looks good!
+            return true;
         }
 
-        private void updateProposal(int rotation, long timestampMS,
-                float magnitude, int tiltAngle, int orientationAngle) {
-            if (mProposalRotation != rotation) {
-                mProposalRotation = rotation;
-                mHistoryIndex = 0;
-                mHistoryLength = 0;
-            }
-
-            final int index = mHistoryIndex;
-            mHistoryTimestampMS[index] = timestampMS;
-            mHistoryMagnitudes[index] = magnitude;
-            mHistoryTiltAngles[index] = tiltAngle;
-            mHistoryOrientationAngles[index] = orientationAngle;
-            mHistoryIndex = (index + 1) % HISTORY_SIZE;
-            if (mHistoryLength < HISTORY_SIZE) {
-                mHistoryLength += 1;
-            }
-
-            long age = 0;
-            for (int i = 1; i < mHistoryLength; i++) {
-                final int olderIndex = (index + HISTORY_SIZE - i) % HISTORY_SIZE;
-                if (Math.abs(mHistoryMagnitudes[olderIndex] - magnitude)
-                        > SETTLE_MAGNITUDE_MAX_DELTA) {
-                    break;
-                }
-                if (angleAbsoluteDelta(mHistoryTiltAngles[olderIndex],
-                        tiltAngle) > SETTLE_TILT_ANGLE_MAX_DELTA) {
-                    break;
-                }
-                if (angleAbsoluteDelta(mHistoryOrientationAngles[olderIndex],
-                        orientationAngle) > SETTLE_ORIENTATION_ANGLE_MAX_DELTA) {
-                    break;
-                }
-                age = timestampMS - mHistoryTimestampMS[olderIndex];
-                if (age >= SETTLE_TIME_MS) {
-                    break;
-                }
-            }
-            mProposalAgeMS = age;
+        private void reset() {
+            mLastFilteredTimestampNanos = Long.MIN_VALUE;
+            mProposedRotation = -1;
+            mFlatTimestampNanos = Long.MIN_VALUE;
+            mSwingTimestampNanos = Long.MIN_VALUE;
+            clearPredictedRotation();
+            clearTiltHistory();
         }
 
-        private static int angleAbsoluteDelta(int a, int b) {
-            int delta = Math.abs(a - b);
-            if (delta > 180) {
-                delta = 360 - delta;
+        private void clearPredictedRotation() {
+            mPredictedRotation = -1;
+            mPredictedRotationTimestampNanos = Long.MIN_VALUE;
+        }
+
+        private void updatePredictedRotation(long now, int rotation) {
+            if (mPredictedRotation != rotation) {
+                mPredictedRotation = rotation;
+                mPredictedRotationTimestampNanos = now;
             }
-            return delta;
+        }
+
+        private void clearTiltHistory() {
+            mTiltHistoryTimestampNanos[0] = Long.MIN_VALUE;
+            mTiltHistoryIndex = 1;
+        }
+
+        private void addTiltHistoryEntry(long now, float tilt) {
+            mTiltHistory[mTiltHistoryIndex] = tilt;
+            mTiltHistoryTimestampNanos[mTiltHistoryIndex] = now;
+            mTiltHistoryIndex = (mTiltHistoryIndex + 1) % TILT_HISTORY_SIZE;
+            mTiltHistoryTimestampNanos[mTiltHistoryIndex] = Long.MIN_VALUE;
+        }
+
+        private boolean isFlat(long now) {
+            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndex(i)) >= 0; ) {
+                if (mTiltHistory[i] < FLAT_ANGLE) {
+                    break;
+                }
+                if (mTiltHistoryTimestampNanos[i] + FLAT_TIME_NANOS <= now) {
+                    // Tilt has remained greater than FLAT_TILT_ANGLE for FLAT_TIME_NANOS.
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        private boolean isSwinging(long now, float tilt) {
+            for (int i = mTiltHistoryIndex; (i = nextTiltHistoryIndex(i)) >= 0; ) {
+                if (mTiltHistoryTimestampNanos[i] + SWING_TIME_NANOS < now) {
+                    break;
+                }
+                if (mTiltHistory[i] + SWING_AWAY_ANGLE_DELTA <= tilt) {
+                    // Tilted away by SWING_AWAY_ANGLE_DELTA within SWING_TIME_NANOS.
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        private int nextTiltHistoryIndex(int index) {
+            index = (index == 0 ? TILT_HISTORY_SIZE : index) - 1;
+            return mTiltHistoryTimestampNanos[index] != Long.MIN_VALUE ? index : -1;
+        }
+
+        private static float remainingMS(long now, long until) {
+            return now >= until ? 0 : (until - now) * 0.000001f;
         }
     }
 }
diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java
index 21364c1a..bc0557e 100644
--- a/core/java/android/webkit/HTML5VideoFullScreen.java
+++ b/core/java/android/webkit/HTML5VideoFullScreen.java
@@ -198,6 +198,10 @@
         // Call into the native to ask for the state, if still in play mode,
         // this will trigger the video to play.
         mProxy.dispatchOnRestoreState();
+
+        if (getStartWhenPrepared()) {
+            mPlayer.start();
+        }
     }
 
     public boolean fullScreenExited() {
diff --git a/core/java/android/webkit/HTML5VideoView.java b/core/java/android/webkit/HTML5VideoView.java
index 1d8bda7..73166cb 100644
--- a/core/java/android/webkit/HTML5VideoView.java
+++ b/core/java/android/webkit/HTML5VideoView.java
@@ -194,6 +194,25 @@
         mPlayer.setOnInfoListener(proxy);
     }
 
+    public void prepareDataCommon(HTML5VideoViewProxy proxy) {
+        try {
+            mPlayer.setDataSource(proxy.getContext(), mUri, mHeaders);
+            mPlayer.prepareAsync();
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalStateException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        mCurrentState = STATE_NOTPREPARED;
+    }
+
+    public void reprepareData(HTML5VideoViewProxy proxy) {
+        mPlayer.reset();
+        prepareDataCommon(proxy);
+    }
+
     // Normally called immediately after setVideoURI. But for full screen,
     // this should be after surface holder created
     public void prepareDataAndDisplayMode(HTML5VideoViewProxy proxy) {
@@ -204,19 +223,8 @@
         setOnPreparedListener(proxy);
         setOnErrorListener(proxy);
         setOnInfoListener(proxy);
-        // When there is exception, we could just bail out silently.
-        // No Video will be played though. Write the stack for debug
-        try {
-            mPlayer.setDataSource(mProxy.getContext(), mUri, mHeaders);
-            mPlayer.prepareAsync();
-        } catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        } catch (IllegalStateException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        mCurrentState = STATE_NOTPREPARED;
+
+        prepareDataCommon(proxy);
     }
 
 
@@ -324,4 +332,14 @@
         return false;
     }
 
+    private boolean m_startWhenPrepared = false;
+
+    public void setStartWhenPrepared(boolean willPlay) {
+        m_startWhenPrepared  = willPlay;
+    }
+
+    public boolean getStartWhenPrepared() {
+        return m_startWhenPrepared;
+    }
+
 }
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index 1c09bb9..d306c86 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -182,6 +182,21 @@
             if (mHTML5VideoView != null) {
                 currentVideoLayerId = mHTML5VideoView.getVideoLayerId();
                 backFromFullScreenMode = mHTML5VideoView.fullScreenExited();
+
+                // When playing video back to back in full screen mode,
+                // javascript will switch the src and call play.
+                // In this case, we can just reuse the same full screen view,
+                // and play the video after prepared.
+                if (mHTML5VideoView.isFullScreenMode()
+                    && !backFromFullScreenMode
+                    && currentVideoLayerId != videoLayerId
+                    && mCurrentProxy != proxy) {
+                    mCurrentProxy = proxy;
+                    mHTML5VideoView.setStartWhenPrepared(true);
+                    mHTML5VideoView.setVideoURI(url, proxy);
+                    mHTML5VideoView.reprepareData(proxy);
+                    return;
+                }
             }
 
             if (backFromFullScreenMode
diff --git a/core/java/android/webkit/SelectActionModeCallback.java b/core/java/android/webkit/SelectActionModeCallback.java
index 8c174aa..cdf20f6 100644
--- a/core/java/android/webkit/SelectActionModeCallback.java
+++ b/core/java/android/webkit/SelectActionModeCallback.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.app.SearchManager;
+import android.content.ClipboardManager;
 import android.content.Context;
 import android.content.Intent;
 import android.provider.Browser;
@@ -27,11 +28,16 @@
 class SelectActionModeCallback implements ActionMode.Callback {
     private WebView mWebView;
     private ActionMode mActionMode;
+    private boolean mIsTextSelected = true;
 
     void setWebView(WebView webView) {
         mWebView = webView;
     }
 
+    void setTextSelected(boolean isTextSelected) {
+        mIsTextSelected = isTextSelected;
+    }
+
     void finish() {
         // It is possible that onCreateActionMode was never called, in the case
         // where there is no ActionBar, for example.
@@ -52,17 +58,25 @@
         mode.setTitle(allowText ?
                 context.getString(com.android.internal.R.string.textSelectionCABTitle) : null);
 
-        if (!mode.isUiFocusable()) {
-            // If the action mode UI we're running in isn't capable of taking window focus
-            // the user won't be able to type into the find on page UI. Disable this functionality.
-            // (Note that this should only happen in floating dialog windows.)
-            // This can be removed once we can handle multiple focusable windows at a time
-            // in a better way.
-            final MenuItem findOnPageItem = menu.findItem(com.android.internal.R.id.find);
-            if (findOnPageItem != null) {
-                findOnPageItem.setVisible(false);
-            }
-        }
+        // If the action mode UI we're running in isn't capable of taking window focus
+        // the user won't be able to type into the find on page UI. Disable this functionality.
+        // (Note that this should only happen in floating dialog windows.)
+        // This can be removed once we can handle multiple focusable windows at a time
+        // in a better way.
+        ClipboardManager cm = (ClipboardManager)(context
+                .getSystemService(Context.CLIPBOARD_SERVICE));
+        boolean isFocusable = mode.isUiFocusable();
+        boolean isEditable = mWebView.focusCandidateIsEditableText();
+        boolean canPaste = isEditable && cm.hasPrimaryClip() && isFocusable;
+        boolean canFind = !isEditable && isFocusable;
+        boolean canCut = isEditable && mIsTextSelected && isFocusable;
+        boolean canCopy = mIsTextSelected;
+        boolean canWebSearch = mIsTextSelected;
+        setMenuVisibility(menu, canFind, com.android.internal.R.id.find);
+        setMenuVisibility(menu, canPaste, com.android.internal.R.id.paste);
+        setMenuVisibility(menu, canCut, com.android.internal.R.id.cut);
+        setMenuVisibility(menu, canCopy, com.android.internal.R.id.copy);
+        setMenuVisibility(menu, canWebSearch, com.android.internal.R.id.websearch);
         mActionMode = mode;
         return true;
     }
@@ -75,11 +89,21 @@
     @Override
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
         switch(item.getItemId()) {
+            case android.R.id.cut:
+                mWebView.cutSelection();
+                mode.finish();
+                break;
+
             case android.R.id.copy:
                 mWebView.copySelection();
                 mode.finish();
                 break;
 
+            case android.R.id.paste:
+                mWebView.pasteFromClipboard();
+                mode.finish();
+                break;
+
             case com.android.internal.R.id.share:
                 String selection = mWebView.getSelection();
                 Browser.sendString(mWebView.getContext(), selection);
@@ -113,4 +137,11 @@
     public void onDestroyActionMode(ActionMode mode) {
         mWebView.selectionDone();
     }
+
+    private void setMenuVisibility(Menu menu, boolean visible, int resourceId) {
+        final MenuItem item = menu.findItem(resourceId);
+        if (item != null) {
+            item.setVisible(visible);
+        }
+    }
 }
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index e6fc3d6..148be5c 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -20,6 +20,7 @@
 import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.content.BroadcastReceiver;
+import android.content.ClipData;
 import android.content.ClipboardManager;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
@@ -422,7 +423,7 @@
     private final Rect mViewRectViewport = new Rect();
     private final RectF mVisibleContentRect = new RectF();
     private boolean mGLViewportEmpty = false;
-    WebViewInputConnection mInputConnection = new WebViewInputConnection();
+    WebViewInputConnection mInputConnection = null;
 
 
     /**
@@ -797,6 +798,8 @@
     static final int UPDATE_ZOOM_DENSITY                = 139;
     static final int EXIT_FULLSCREEN_VIDEO              = 140;
 
+    static final int COPY_TO_CLIPBOARD                  = 141;
+
     private static final int FIRST_PACKAGE_MSG_ID = SCROLL_TO_MSG_ID;
     private static final int LAST_PACKAGE_MSG_ID = HIT_TEST_RESULT;
 
@@ -4520,6 +4523,11 @@
         final boolean isSelecting = selectText();
         if (isSelecting) {
             performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
+        } else if (focusCandidateIsEditableText()) {
+            mSelectCallback = new SelectActionModeCallback();
+            mSelectCallback.setWebView(this);
+            mSelectCallback.setTextSelected(false);
+            startActionMode(mSelectCallback);
         }
         return isSelecting;
     }
@@ -4942,15 +4950,13 @@
     }
 
     @Override
-    public boolean onCheckIsTextEditor() {
-        return true;
-    }
-
-    @Override
     public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
         outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_FULLSCREEN
                 | EditorInfo.TYPE_CLASS_TEXT
                 | EditorInfo.TYPE_TEXT_VARIATION_NORMAL;
+        if (mInputConnection == null) {
+            mInputConnection = new WebViewInputConnection();
+        }
         return mInputConnection;
     }
 
@@ -5731,12 +5737,49 @@
             ClipboardManager cm = (ClipboardManager)getContext()
                     .getSystemService(Context.CLIPBOARD_SERVICE);
             cm.setText(selection);
+            int[] handles = new int[4];
+            nativeGetSelectionHandles(mNativeClass, handles);
+            mWebViewCore.sendMessage(EventHub.COPY_TEXT, handles);
         }
         invalidate(); // remove selection region and pointer
         return copiedSomething;
     }
 
     /**
+     * Cut the selected text into the clipboard
+     *
+     * @hide This is an implementation detail
+     */
+    public void cutSelection() {
+        copySelection();
+        int[] handles = new int[4];
+        nativeGetSelectionHandles(mNativeClass, handles);
+        mWebViewCore.sendMessage(EventHub.DELETE_TEXT, handles);
+    }
+
+    /**
+     * Paste text from the clipboard to the cursor position.
+     *
+     * @hide This is an implementation detail
+     */
+    public void pasteFromClipboard() {
+        ClipboardManager cm = (ClipboardManager)getContext()
+                .getSystemService(Context.CLIPBOARD_SERVICE);
+        ClipData clipData = cm.getPrimaryClip();
+        if (clipData != null) {
+            ClipData.Item clipItem = clipData.getItemAt(0);
+            CharSequence pasteText = clipItem.getText();
+            if (pasteText != null) {
+                int[] handles = new int[4];
+                nativeGetSelectionHandles(mNativeClass, handles);
+                mWebViewCore.sendMessage(EventHub.DELETE_TEXT, handles);
+                mWebViewCore.sendMessage(EventHub.INSERT_TEXT,
+                        pasteText.toString());
+            }
+        }
+    }
+
+    /**
      * @hide This is an implementation detail.
      */
     public SearchBox getSearchBox() {
@@ -8916,6 +8959,10 @@
                     nativeSelectAt(msg.arg1, msg.arg2);
                     break;
 
+                case COPY_TO_CLIPBOARD:
+                    copyToClipboard((String) msg.obj);
+                    break;
+
                 default:
                     super.handleMessage(msg);
                     break;
@@ -9594,6 +9641,18 @@
     }
 
     /**
+     * Copy text into the clipboard. This is called indirectly from
+     * WebViewCore.
+     * @param text The text to put into the clipboard.
+     */
+    private void copyToClipboard(String text) {
+        ClipboardManager cm = (ClipboardManager)getContext()
+                .getSystemService(Context.CLIPBOARD_SERVICE);
+        ClipData clip = ClipData.newPlainText(getTitle(), text);
+        cm.setPrimaryClip(clip);
+    }
+
+    /**
      *  Update our cache with updatedText.
      *  @param updatedText  The new text to put in our cache.
      *  @hide
@@ -9679,6 +9738,23 @@
         return nativeTileProfilingGetFloat(frame, tile, key);
     }
 
+    /**
+     * Checks the focused content for an editable text field. This can be
+     * text input or ContentEditable.
+     * @return true if the focused item is an editable text field.
+     */
+    boolean focusCandidateIsEditableText() {
+        boolean isEditable = false;
+        // TODO: reverse sDisableNavcache so that its name is positive
+        boolean isNavcacheEnabled = !sDisableNavcache;
+        if (isNavcacheEnabled) {
+            isEditable = nativeFocusCandidateIsEditableText(mNativeClass);
+        } else if (mFocusedNode != null) {
+            isEditable = mFocusedNode.mEditable;
+        }
+        return isEditable;
+    }
+
     private native int nativeCacheHitFramePointer();
     private native boolean  nativeCacheHitIsPlugin();
     private native Rect nativeCacheHitNodeBounds();
@@ -9724,6 +9800,7 @@
     /* package */ native boolean  nativeFocusCandidateIsPassword();
     private native boolean  nativeFocusCandidateIsRtlText();
     private native boolean  nativeFocusCandidateIsTextInput();
+    private native boolean nativeFocusCandidateIsEditableText(int nativeClass);
     /* package */ native int      nativeFocusCandidateMaxLength();
     /* package */ native boolean  nativeFocusCandidateIsAutoComplete();
     /* package */ native boolean  nativeFocusCandidateIsSpellcheck();
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index c4981e1..fe5c04c 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -1126,6 +1126,11 @@
         // private message ids
         private static final int DESTROY =     200;
 
+        // for cut & paste
+        static final int COPY_TEXT = 210;
+        static final int DELETE_TEXT = 211;
+        static final int INSERT_TEXT = 212;
+
         // Private handler for WebCore messages.
         private Handler mHandler;
         // Message queue for containing messages before the WebCore thread is
@@ -1737,6 +1742,28 @@
                             Rect rect = (Rect) msg.obj;
                             nativeScrollLayer(mNativeClass, nativeLayer,
                                     rect);
+                            break;
+
+                        case DELETE_TEXT: {
+                            int[] handles = (int[]) msg.obj;
+                            nativeDeleteText(mNativeClass, handles[0],
+                                    handles[1], handles[2], handles[3]);
+                            break;
+                        }
+                        case COPY_TEXT: {
+                            int[] handles = (int[]) msg.obj;
+                            String copiedText = nativeGetText(mNativeClass,
+                                    handles[0], handles[1], handles[2],
+                                    handles[3]);
+                            if (copiedText != null) {
+                                mWebView.mPrivateHandler.obtainMessage(WebView.COPY_TO_CLIPBOARD, copiedText)
+                                        .sendToTarget();
+                            }
+                            break;
+                        }
+                        case INSERT_TEXT:
+                            nativeInsertText(mNativeClass, (String) msg.obj);
+                            break;
                     }
                 }
             };
@@ -2976,4 +3003,35 @@
 
     private native void nativeAutoFillForm(int nativeClass, int queryId);
     private native void nativeScrollLayer(int nativeClass, int layer, Rect rect);
+
+    /**
+     * Deletes editable text between two points. Note that the selection may
+     * differ from the WebView's selection because the algorithms for selecting
+     * text differs for non-LTR text. Any text that isn't editable will be
+     * left unchanged.
+     * @param nativeClass The pointer to the native class (mNativeClass)
+     * @param startX The X position of the top-left selection point.
+     * @param startY The Y position of the top-left selection point.
+     * @param endX The X position of the bottom-right selection point.
+     * @param endY The Y position of the bottom-right selection point.
+     */
+    private native void nativeDeleteText(int nativeClass,
+            int startX, int startY, int endX, int endY);
+    /**
+     * Inserts text at the current cursor position. If the currently-focused
+     * node does not have a cursor position then this function does nothing.
+     */
+    private native void nativeInsertText(int nativeClass, String text);
+    /**
+     * Gets the text between two selection points. Note that the selection
+     * may differ from the WebView's selection because the algorithms for
+     * selecting text differs for non-LTR text.
+     * @param nativeClass The pointer to the native class (mNativeClass)
+     * @param startX The X position of the top-left selection point.
+     * @param startY The Y position of the top-left selection point.
+     * @param endX The X position of the bottom-right selection point.
+     * @param endY The Y position of the bottom-right selection point.
+     */
+    private native String nativeGetText(int nativeClass,
+            int startX, int startY, int endX, int endY);
 }
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index 07523e3..f7a6b272 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -1085,10 +1085,11 @@
 
                 for (int i = 0; i < count; i++) {
                     if (adapter.isEnabled(i)) {
-                        realCount++;
                         Object item = adapter.getItem(i);
                         long id = adapter.getItemId(i);
-                        completions[i] = new CompletionInfo(id, i, convertSelectionToString(item));
+                        completions[realCount] = new CompletionInfo(id, realCount,
+                                convertSelectionToString(item));
+                        realCount++;
                     }
                 }
                 
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 02144a8..04f4a83 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -342,6 +342,7 @@
     private int mTextEditSuggestionItemLayout;
     private SuggestionsPopupWindow mSuggestionsPopupWindow;
     private SuggestionRangeSpan mSuggestionRangeSpan;
+    private Runnable mShowSuggestionRunnable;
 
     private int mCursorDrawableRes;
     private final Drawable[] mCursorDrawable = new Drawable[2];
@@ -357,7 +358,6 @@
     private float mLastDownPositionX, mLastDownPositionY;
     private Callback mCustomSelectionActionModeCallback;
 
-    private final int mSquaredTouchSlopDistance;
     // Set when this TextView gained focus with some text selected. Will start selection mode.
     private boolean mCreatedWithASelection = false;
 
@@ -443,15 +443,12 @@
         this(context, null);
     }
 
-    public TextView(Context context,
-                    AttributeSet attrs) {
+    public TextView(Context context, AttributeSet attrs) {
         this(context, attrs, com.android.internal.R.attr.textViewStyle);
     }
 
     @SuppressWarnings("deprecation")
-    public TextView(Context context,
-                    AttributeSet attrs,
-                    int defStyle) {
+    public TextView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
         mText = "";
 
@@ -1134,10 +1131,6 @@
         setLongClickable(longClickable);
 
         prepareCursorControllers();
-
-        final ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
-        final int touchSlop = viewConfiguration.getScaledTouchSlop();
-        mSquaredTouchSlopDistance = touchSlop * touchSlop;
     }
 
     private void setTypefaceByIndex(int typefaceIndex, int styleIndex) {
@@ -3202,8 +3195,7 @@
 
         int n = mFilters.length;
         for (int i = 0; i < n; i++) {
-            CharSequence out = mFilters[i].filter(text, 0, text.length(),
-                                                  EMPTY_SPANNED, 0, 0);
+            CharSequence out = mFilters[i].filter(text, 0, text.length(), EMPTY_SPANNED, 0, 0);
             if (out != null) {
                 text = out;
             }
@@ -4522,6 +4514,10 @@
             mSelectionModifierCursorController.onDetached();
         }
 
+        if (mShowSuggestionRunnable != null) {
+            removeCallbacks(mShowSuggestionRunnable);
+        }
+
         hideControllers();
 
         resetResolvedDrawables();
@@ -5273,10 +5269,8 @@
                         state.handleUpEvent(event);
                     }
                     if (event.isTracking() && !event.isCanceled()) {
-                        if (isInSelectionMode) {
-                            stopSelectionActionMode();
-                            return true;
-                        }
+                        stopSelectionActionMode();
+                        return true;
                     }
                 }
             }
@@ -5621,11 +5615,13 @@
         return super.onKeyUp(keyCode, event);
     }
 
-    @Override public boolean onCheckIsTextEditor() {
+    @Override
+    public boolean onCheckIsTextEditor() {
         return mInputType != EditorInfo.TYPE_NULL;
     }
 
-    @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
+    @Override
+    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
         if (onCheckIsTextEditor() && isEnabled()) {
             if (mInputMethodState == null) {
                 mInputMethodState = new InputMethodState();
@@ -8339,6 +8335,10 @@
             getSelectionController().onTouchEvent(event);
         }
 
+        if (mShowSuggestionRunnable != null) {
+            removeCallbacks(mShowSuggestionRunnable);
+        }
+
         if (action == MotionEvent.ACTION_DOWN) {
             mLastDownPositionX = event.getX();
             mLastDownPositionY = event.getY();
@@ -8362,7 +8362,7 @@
         }
 
         final boolean touchIsFinished = (action == MotionEvent.ACTION_UP) &&
-                !shouldIgnoreActionUpEvent() && isFocused();
+                !mIgnoreActionUpEvent && isFocused();
 
          if ((mMovement != null || onCheckIsTextEditor()) && isEnabled()
                 && mText instanceof Spannable && mLayout != null) {
@@ -8379,13 +8379,17 @@
                 ClickableSpan[] links = ((Spannable) mText).getSpans(getSelectionStart(),
                         getSelectionEnd(), ClickableSpan.class);
 
-                if (links.length != 0) {
+                if (links.length > 0) {
                     links[0].onClick(this);
                     handled = true;
                 }
             }
 
             if (touchIsFinished && (isTextEditable() || mTextIsSelectable)) {
+                // Move cursor
+                final int offset = getOffsetForPosition(event.getX(), event.getY());
+                Selection.setSelection((Spannable) mText, offset);
+
                 // Show the IME, except when selecting in read-only text.
                 final InputMethodManager imm = InputMethodManager.peekInstance();
                 viewClicked(imm);
@@ -8402,7 +8406,15 @@
                     }
                     if (!extractedTextModeWillBeStarted()) {
                         if (isCursorInsideEasyCorrectionSpan()) {
-                            showSuggestions();
+                            if (mShowSuggestionRunnable == null) {
+                                mShowSuggestionRunnable = new Runnable() {
+                                    public void run() {
+                                        showSuggestions();
+                                    }
+                                };
+                            }
+                            postDelayed(mShowSuggestionRunnable,
+                                    ViewConfiguration.getDoubleTapTimeout());
                         } else if (hasInsertionController()) {
                             getInsertionController().show();
                         }
@@ -8538,17 +8550,6 @@
         mIgnoreActionUpEvent = true;
     }
 
-    /**
-     * This method is only valid during a touch event.
-     *
-     * @return true when the ACTION_UP event should be ignored, false otherwise.
-     *
-     * @hide
-     */
-    public boolean shouldIgnoreActionUpEvent() {
-        return mIgnoreActionUpEvent;
-    }
-
     @Override
     public boolean onTrackballEvent(MotionEvent event) {
         if (mMovement != null && mText instanceof Spannable &&
@@ -8929,14 +8930,12 @@
             wordIterator.setCharSequence(mText, minOffset, maxOffset);
 
             selectionStart = wordIterator.getBeginning(minOffset);
-            if (selectionStart == BreakIterator.DONE) return false;
-
             selectionEnd = wordIterator.getEnd(maxOffset);
-            if (selectionEnd == BreakIterator.DONE) return false;
 
-            if (selectionStart == selectionEnd) {
+            if (selectionStart == BreakIterator.DONE || selectionEnd == BreakIterator.DONE ||
+                    selectionStart == selectionEnd) {
                 // Possible when the word iterator does not properly handle the text's language
-                long range = getCharRange(selectionStart);
+                long range = getCharRange(minOffset);
                 selectionStart = extractRangeStartFromLong(range);
                 selectionEnd = extractRangeEndFromLong(range);
             }
@@ -9248,7 +9247,6 @@
         boolean vibrate = true;
 
         if (super.performLongClick()) {
-            mDiscardNextActionUp = true;
             handled = true;
         }
 
@@ -10157,8 +10155,8 @@
 
         boolean willExtract = extractedTextModeWillBeStarted();
 
-        // Do not start the action mode when extracted text will show up full screen, thus
-        // immediately hiding the newly created action bar, which would be visually distracting.
+        // Do not start the action mode when extracted text will show up full screen, which would
+        // immediately hide the newly created action bar and would be visually distracting.
         if (!willExtract) {
             ActionMode.Callback actionModeCallback = new SelectionActionModeCallback();
             mSelectionActionMode = startActionMode(actionModeCallback);
@@ -10184,7 +10182,10 @@
         return false;
     }
 
-    private void stopSelectionActionMode() {
+    /**
+     * @hide
+     */
+    protected void stopSelectionActionMode() {
         if (mSelectionActionMode != null) {
             // This will hide the mSelectionModifierCursorController
             mSelectionActionMode.finish();
@@ -10798,7 +10799,12 @@
                         final float deltaX = mDownPositionX - ev.getRawX();
                         final float deltaY = mDownPositionY - ev.getRawY();
                         final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
-                        if (distanceSquared < mSquaredTouchSlopDistance) {
+
+                        final ViewConfiguration viewConfiguration = ViewConfiguration.get(
+                                TextView.this.getContext());
+                        final int touchSlop = viewConfiguration.getScaledTouchSlop();
+
+                        if (distanceSquared < touchSlop * touchSlop) {
                             if (mActionPopupWindow != null && mActionPopupWindow.isShowing()) {
                                 // Tapping on the handle dismisses the displayed action popup
                                 mActionPopupWindow.hide();
@@ -11012,7 +11018,8 @@
 
         // Double tap detection
         private long mPreviousTapUpTime = 0;
-        private float mPreviousTapPositionX, mPreviousTapPositionY;
+        private float mDownPositionX, mDownPositionY;
+        private boolean mGestureStayedInTapRegion;
 
         SelectionModifierCursorController() {
             resetTouchOffsets();
@@ -11075,20 +11082,28 @@
                     mMinTouchOffset = mMaxTouchOffset = getOffsetForPosition(x, y);
 
                     // Double tap detection
-                    long duration = SystemClock.uptimeMillis() - mPreviousTapUpTime;
-                    if (duration <= ViewConfiguration.getDoubleTapTimeout() &&
-                            isPositionOnText(x, y)) {
-                        final float deltaX = x - mPreviousTapPositionX;
-                        final float deltaY = y - mPreviousTapPositionY;
-                        final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
-                        if (distanceSquared < mSquaredTouchSlopDistance) {
-                            startSelectionActionMode();
-                            mDiscardNextActionUp = true;
+                    if (mGestureStayedInTapRegion) {
+                        long duration = SystemClock.uptimeMillis() - mPreviousTapUpTime;
+                        if (duration <= ViewConfiguration.getDoubleTapTimeout()) {
+                            final float deltaX = x - mDownPositionX;
+                            final float deltaY = y - mDownPositionY;
+                            final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
+
+                            ViewConfiguration viewConfiguration = ViewConfiguration.get(
+                                    TextView.this.getContext());
+                            int doubleTapSlop = viewConfiguration.getScaledDoubleTapSlop();
+                            boolean stayedInArea = distanceSquared < doubleTapSlop * doubleTapSlop;
+
+                            if (stayedInArea && isPositionOnText(x, y)) {
+                                startSelectionActionMode();
+                                mDiscardNextActionUp = true;
+                            }
                         }
                     }
 
-                    mPreviousTapPositionX = x;
-                    mPreviousTapPositionY = y;
+                    mDownPositionX = x;
+                    mDownPositionY = y;
+                    mGestureStayedInTapRegion = true;
                     break;
 
                 case MotionEvent.ACTION_POINTER_DOWN:
@@ -11101,6 +11116,22 @@
                     }
                     break;
 
+                case MotionEvent.ACTION_MOVE:
+                    if (mGestureStayedInTapRegion) {
+                        final float deltaX = event.getX() - mDownPositionX;
+                        final float deltaY = event.getY() - mDownPositionY;
+                        final float distanceSquared = deltaX * deltaX + deltaY * deltaY;
+
+                        final ViewConfiguration viewConfiguration = ViewConfiguration.get(
+                                TextView.this.getContext());
+                        int doubleTapTouchSlop = viewConfiguration.getScaledDoubleTapTouchSlop();
+
+                        if (distanceSquared > doubleTapTouchSlop * doubleTapTouchSlop) {
+                            mGestureStayedInTapRegion = false;
+                        }
+                    }
+                    break;
+
                 case MotionEvent.ACTION_UP:
                     mPreviousTapUpTime = SystemClock.uptimeMillis();
                     break;
diff --git a/core/java/com/android/internal/backup/BackupConstants.java b/core/java/com/android/internal/backup/BackupConstants.java
index 906b5d5..4c276b7 100644
--- a/core/java/com/android/internal/backup/BackupConstants.java
+++ b/core/java/com/android/internal/backup/BackupConstants.java
@@ -24,4 +24,5 @@
     public static final int TRANSPORT_ERROR = 1;
     public static final int TRANSPORT_NOT_INITIALIZED = 2;
     public static final int AGENT_ERROR = 3;
+    public static final int AGENT_UNKNOWN = 4;
 }
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 9c45dc6..6a99a2b 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -243,7 +243,7 @@
     private static void preloadClasses() {
         final VMRuntime runtime = VMRuntime.getRuntime();
 
-        InputStream is = ZygoteInit.class.getClassLoader().getResourceAsStream(
+        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(
                 PRELOADED_CLASSES);
         if (is == null) {
             Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + ".");
diff --git a/core/jni/android_database_SQLiteCommon.cpp b/core/jni/android_database_SQLiteCommon.cpp
index d5fdb15..a94b9d2 100644
--- a/core/jni/android_database_SQLiteCommon.cpp
+++ b/core/jni/android_database_SQLiteCommon.cpp
@@ -109,9 +109,6 @@
         case SQLITE_MISMATCH:
            exceptionClass = "android/database/sqlite/SQLiteDatatypeMismatchException";
            break;
-        case SQLITE_UNCLOSED:
-           exceptionClass = "android/database/sqlite/SQLiteUnfinalizedObjectsException";
-           break;
         default:
            exceptionClass = "android/database/sqlite/SQLiteException";
            break;
diff --git a/core/jni/android_database_SQLiteDebug.cpp b/core/jni/android_database_SQLiteDebug.cpp
index 20ff00b..c1e7305 100644
--- a/core/jni/android_database_SQLiteDebug.cpp
+++ b/core/jni/android_database_SQLiteDebug.cpp
@@ -14,171 +14,42 @@
  * limitations under the License.
  */
 
-#include <JNIHelp.h>
+#define LOG_TAG "SQLiteDebug"
+
 #include <jni.h>
-#include <utils/misc.h>
+#include <JNIHelp.h>
+#include <android_runtime/AndroidRuntime.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <cutils/mspace.h>
 #include <utils/Log.h>
 
 #include <sqlite3.h>
 
-// From mem_mspace.c in libsqlite
-extern "C" mspace sqlite3_get_mspace();
-
 namespace android {
 
-static jfieldID gMemoryUsedField;
-static jfieldID gPageCacheOverfloField;
-static jfieldID gLargestMemAllocField;
+static struct {
+    jfieldID memoryUsed;
+    jfieldID pageCacheOverflow;
+    jfieldID largestMemAlloc;
+} gSQLiteDebugPagerStatsClassInfo;
 
-
-#define USE_MSPACE 0
-
-static void getPagerStats(JNIEnv *env, jobject clazz, jobject statsObj)
+static void nativeGetPagerStats(JNIEnv *env, jobject clazz, jobject statsObj)
 {
     int memoryUsed;
-    int pageCacheOverflo;
+    int pageCacheOverflow;
     int largestMemAlloc;
     int unused;
 
     sqlite3_status(SQLITE_STATUS_MEMORY_USED, &memoryUsed, &unused, 0);
     sqlite3_status(SQLITE_STATUS_MALLOC_SIZE, &unused, &largestMemAlloc, 0);
-    sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &pageCacheOverflo, &unused, 0);
-    env->SetIntField(statsObj, gMemoryUsedField, memoryUsed);
-    env->SetIntField(statsObj, gPageCacheOverfloField, pageCacheOverflo);
-    env->SetIntField(statsObj, gLargestMemAllocField, largestMemAlloc);
-}
-
-static jlong getHeapSize(JNIEnv *env, jobject clazz)
-{
-#if !NO_MALLINFO
-    struct mallinfo info = mspace_mallinfo(sqlite3_get_mspace());
-    struct mallinfo info = dlmallinfo();
-    return (jlong) info.usmblks;
-#elif USE_MSPACE
-    mspace space = sqlite3_get_mspace();
-    if (space != 0) {
-        return mspace_footprint(space);
-    } else {
-        return 0;
-    }
-#else
-    return 0;
-#endif
-}
-
-static jlong getHeapAllocatedSize(JNIEnv *env, jobject clazz)
-{
-#if !NO_MALLINFO
-    struct mallinfo info = mspace_mallinfo(sqlite3_get_mspace());
-    return (jlong) info.uordblks;
-#else
-    return sqlite3_memory_used();
-#endif
-}
-
-static jlong getHeapFreeSize(JNIEnv *env, jobject clazz)
-{
-#if !NO_MALLINFO
-    struct mallinfo info = mspace_mallinfo(sqlite3_get_mspace());
-    return (jlong) info.fordblks;
-#else
-    return getHeapSize(env, clazz) - sqlite3_memory_used();
-#endif
-}
-
-static int read_mapinfo(FILE *fp,
-        int *sharedPages, int *privatePages)
-{
-    char line[1024];
-    int len;
-    int skip;
-
-    unsigned start = 0, size = 0, resident = 0;
-    unsigned shared_clean = 0, shared_dirty = 0;
-    unsigned private_clean = 0, private_dirty = 0;
-    unsigned referenced = 0;
-
-    int isAnon = 0;
-    int isHeap = 0;
-
-again:
-    skip = 0;
-    
-    if(fgets(line, 1024, fp) == 0) return 0;
-
-    len = strlen(line);
-    if (len < 1) return 0;
-    line[--len] = 0;
-
-    /* ignore guard pages */
-    if (line[18] == '-') skip = 1;
-
-    start = strtoul(line, 0, 16);
-
-    if (len > 50 && !strncmp(line + 49, "/tmp/sqlite-heap", strlen("/tmp/sqlite-heap"))) {
-        isHeap = 1;
-    }
-
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Size: %d kB", &size) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Rss: %d kB", &resident) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Shared_Clean: %d kB", &shared_clean) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Shared_Dirty: %d kB", &shared_dirty) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Private_Clean: %d kB", &private_clean) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Private_Dirty: %d kB", &private_dirty) != 1) return 0;
-    if (fgets(line, 1024, fp) == 0) return 0;
-    if (sscanf(line, "Referenced: %d kB", &referenced) != 1) return 0;
-    
-    if (skip) {
-        goto again;
-    }
-
-    if (isHeap) {
-        *sharedPages += shared_dirty;
-        *privatePages += private_dirty;
-    }
-    return 1;
-}
-
-static void load_maps(int pid, int *sharedPages, int *privatePages)
-{
-    char tmp[128];
-    FILE *fp;
-    
-    sprintf(tmp, "/proc/%d/smaps", pid);
-    fp = fopen(tmp, "r");
-    if (fp == 0) return;
-    
-    while (read_mapinfo(fp, sharedPages, privatePages) != 0) {
-        // Do nothing
-    }
-    fclose(fp);
-}
-
-static void getHeapDirtyPages(JNIEnv *env, jobject clazz, jintArray pages)
-{
-    int _pages[2];
-
-    _pages[0] = 0;
-    _pages[1] = 0;
-
-    load_maps(getpid(), &_pages[0], &_pages[1]);
-
-    // Convert from kbytes to 4K pages
-    _pages[0] /= 4;
-    _pages[1] /= 4;
-
-    env->SetIntArrayRegion(pages, 0, 2, _pages);
+    sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &pageCacheOverflow, &unused, 0);
+    env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.memoryUsed, memoryUsed);
+    env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.pageCacheOverflow,
+            pageCacheOverflow);
+    env->SetIntField(statsObj, gSQLiteDebugPagerStatsClassInfo.largestMemAlloc, largestMemAlloc);
 }
 
 /*
@@ -187,43 +58,31 @@
 
 static JNINativeMethod gMethods[] =
 {
-    { "getPagerStats", "(Landroid/database/sqlite/SQLiteDebug$PagerStats;)V",
-            (void*) getPagerStats },
-    { "getHeapSize", "()J", (void*) getHeapSize },
-    { "getHeapAllocatedSize", "()J", (void*) getHeapAllocatedSize },
-    { "getHeapFreeSize", "()J", (void*) getHeapFreeSize },
-    { "getHeapDirtyPages", "([I)V", (void*) getHeapDirtyPages },
+    { "nativeGetPagerStats", "(Landroid/database/sqlite/SQLiteDebug$PagerStats;)V",
+            (void*) nativeGetPagerStats },
 };
 
+#define FIND_CLASS(var, className) \
+        var = env->FindClass(className); \
+        LOG_FATAL_IF(! var, "Unable to find class " className);
+
+#define GET_FIELD_ID(var, clazz, fieldName, fieldDescriptor) \
+        var = env->GetFieldID(clazz, fieldName, fieldDescriptor); \
+        LOG_FATAL_IF(! var, "Unable to find field " fieldName);
+
 int register_android_database_SQLiteDebug(JNIEnv *env)
 {
     jclass clazz;
+    FIND_CLASS(clazz, "android/database/sqlite/SQLiteDebug$PagerStats");
 
-    clazz = env->FindClass("android/database/sqlite/SQLiteDebug$PagerStats");
-    if (clazz == NULL) {
-        ALOGE("Can't find android/database/sqlite/SQLiteDebug$PagerStats");
-        return -1;
-    }
+    GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.memoryUsed, clazz,
+            "memoryUsed", "I");
+    GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.largestMemAlloc, clazz,
+            "largestMemAlloc", "I");
+    GET_FIELD_ID(gSQLiteDebugPagerStatsClassInfo.pageCacheOverflow, clazz,
+            "pageCacheOverflow", "I");
 
-    gMemoryUsedField = env->GetFieldID(clazz, "memoryUsed", "I");
-    if (gMemoryUsedField == NULL) {
-        ALOGE("Can't find memoryUsed");
-        return -1;
-    }
-
-    gLargestMemAllocField = env->GetFieldID(clazz, "largestMemAlloc", "I");
-    if (gLargestMemAllocField == NULL) {
-        ALOGE("Can't find largestMemAlloc");
-        return -1;
-    }
-
-    gPageCacheOverfloField = env->GetFieldID(clazz, "pageCacheOverflo", "I");
-    if (gPageCacheOverfloField == NULL) {
-        ALOGE("Can't find pageCacheOverflo");
-        return -1;
-    }
-
-    return jniRegisterNativeMethods(env, "android/database/sqlite/SQLiteDebug",
+    return AndroidRuntime::registerNativeMethods(env, "android/database/sqlite/SQLiteDebug",
             gMethods, NELEM(gMethods));
 }
 
diff --git a/core/jni/android_database_SQLiteGlobal.cpp b/core/jni/android_database_SQLiteGlobal.cpp
index 82cae5a..9301183 100644
--- a/core/jni/android_database_SQLiteGlobal.cpp
+++ b/core/jni/android_database_SQLiteGlobal.cpp
@@ -24,9 +24,16 @@
 #include <sqlite3_android.h>
 
 #include "android_database_SQLiteCommon.h"
+#include "android_util_Log.h"
 
 namespace android {
 
+// Limit heap to 8MB for now.  This is 4 times the maximum cursor window
+// size, as has been used by the original code in SQLiteDatabase for
+// a long time.
+static const int SOFT_HEAP_LIMIT = 8 * 1024 * 1024;
+
+
 // Called each time a message is logged.
 static void sqliteLogCallback(void* data, int iErrCode, const char* zMsg) {
     bool verboseLog = !!data;
@@ -40,37 +47,41 @@
 }
 
 // Sets the global SQLite configuration.
-// This must be called before any other SQLite functions are called. */
-static void nativeConfig(JNIEnv* env, jclass clazz, jboolean verboseLog, jint softHeapLimit) {
+// This must be called before any other SQLite functions are called.
+static void sqliteInitialize() {
     // Enable multi-threaded mode.  In this mode, SQLite is safe to use by multiple
     // threads as long as no two threads use the same database connection at the same
     // time (which we guarantee in the SQLite database wrappers).
     sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
 
     // Redirect SQLite log messages to the Android log.
+    bool verboseLog = android_util_Log_isVerboseLogEnabled(SQLITE_LOG_TAG);
     sqlite3_config(SQLITE_CONFIG_LOG, &sqliteLogCallback, verboseLog ? (void*)1 : NULL);
 
     // The soft heap limit prevents the page cache allocations from growing
     // beyond the given limit, no matter what the max page cache sizes are
     // set to. The limit does not, as of 3.5.0, affect any other allocations.
-    sqlite3_soft_heap_limit(softHeapLimit);
+    sqlite3_soft_heap_limit(SOFT_HEAP_LIMIT);
+
+    // Initialize SQLite.
+    sqlite3_initialize();
 }
 
-static jint nativeReleaseMemory(JNIEnv* env, jclass clazz, jint bytesToFree) {
-    return sqlite3_release_memory(bytesToFree);
+static jint nativeReleaseMemory(JNIEnv* env, jclass clazz) {
+    return sqlite3_release_memory(SOFT_HEAP_LIMIT);
 }
 
 static JNINativeMethod sMethods[] =
 {
     /* name, signature, funcPtr */
-    { "nativeConfig", "(ZI)V",
-            (void*)nativeConfig },
-    { "nativeReleaseMemory", "(I)I",
+    { "nativeReleaseMemory", "()I",
             (void*)nativeReleaseMemory },
 };
 
 int register_android_database_SQLiteGlobal(JNIEnv *env)
 {
+    sqliteInitialize();
+
     return AndroidRuntime::registerNativeMethods(env, "android/database/sqlite/SQLiteGlobal",
             sMethods, NELEM(sMethods));
 }
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 3052553..3f1af86 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -147,7 +147,7 @@
     }
 
     int bytesPerSample = audioFormat==javaAudioRecordFields.PCM16 ? 2 : 1;
-    int format = audioFormat==javaAudioRecordFields.PCM16 ? 
+    audio_format_t format = audioFormat==javaAudioRecordFields.PCM16 ?
             AUDIO_FORMAT_PCM_16_BIT : AUDIO_FORMAT_PCM_8_BIT;
 
     if (buffSizeInBytes == 0) {
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 8341e4c..6b4c5e8 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -28,7 +28,6 @@
 #include "android_runtime/AndroidRuntime.h"
 
 #include <media/AudioSystem.h>
-#include <media/AudioTrack.h>
 
 #include <system/audio.h>
 #include <system/audio_policy.h>
@@ -156,12 +155,6 @@
 }
 
 static int
-android_media_AudioSystem_setRingerMode(JNIEnv *env, jobject thiz, jint mode, jint mask)
-{
-    return check_AudioSystem_Command(AudioSystem::setRingerMode(mode, mask));
-}
-
-static int
 android_media_AudioSystem_setForceUse(JNIEnv *env, jobject thiz, jint usage, jint config)
 {
     return check_AudioSystem_Command(AudioSystem::setForceUse(static_cast <audio_policy_force_use_t>(usage),
@@ -228,7 +221,6 @@
     {"setDeviceConnectionState", "(IILjava/lang/String;)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
     {"getDeviceConnectionState", "(ILjava/lang/String;)I",  (void *)android_media_AudioSystem_getDeviceConnectionState},
     {"setPhoneState",       "(I)I",     (void *)android_media_AudioSystem_setPhoneState},
-    {"setRingerMode",       "(II)I",    (void *)android_media_AudioSystem_setRingerMode},
     {"setForceUse",         "(II)I",    (void *)android_media_AudioSystem_setForceUse},
     {"getForceUse",         "(I)I",     (void *)android_media_AudioSystem_getForceUse},
     {"initStreamVolume",    "(III)I",   (void *)android_media_AudioSystem_initStreamVolume},
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 4aa49f4..26c9435 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -49,14 +49,6 @@
     jmethodID postNativeEventInJava; //... event post callback method
     int       PCM16;                 //...  format constants
     int       PCM8;                  //...  format constants
-    int       STREAM_VOICE_CALL;     //...  stream type constants
-    int       STREAM_SYSTEM;         //...  stream type constants
-    int       STREAM_RING;           //...  stream type constants
-    int       STREAM_MUSIC;          //...  stream type constants
-    int       STREAM_ALARM;          //...  stream type constants
-    int       STREAM_NOTIFICATION;   //...  stream type constants
-    int       STREAM_BLUETOOTH_SCO;  //...  stream type constants
-    int       STREAM_DTMF;           //...  stream type constants
     int       MODE_STREAM;           //...  memory mode
     int       MODE_STATIC;           //...  memory mode
     jfieldID  nativeTrackInJavaObj;  // stores in Java the native AudioTrack object
@@ -197,23 +189,18 @@
     
     // check the stream type
     audio_stream_type_t atStreamType;
-    if (streamType == javaAudioTrackFields.STREAM_VOICE_CALL) {
-        atStreamType = AUDIO_STREAM_VOICE_CALL;
-    } else if (streamType == javaAudioTrackFields.STREAM_SYSTEM) {
-        atStreamType = AUDIO_STREAM_SYSTEM;
-    } else if (streamType == javaAudioTrackFields.STREAM_RING) {
-        atStreamType = AUDIO_STREAM_RING;
-    } else if (streamType == javaAudioTrackFields.STREAM_MUSIC) {
-        atStreamType = AUDIO_STREAM_MUSIC;
-    } else if (streamType == javaAudioTrackFields.STREAM_ALARM) {
-        atStreamType = AUDIO_STREAM_ALARM;
-    } else if (streamType == javaAudioTrackFields.STREAM_NOTIFICATION) {
-        atStreamType = AUDIO_STREAM_NOTIFICATION;
-    } else if (streamType == javaAudioTrackFields.STREAM_BLUETOOTH_SCO) {
-        atStreamType = AUDIO_STREAM_BLUETOOTH_SCO;
-    } else if (streamType == javaAudioTrackFields.STREAM_DTMF) {
-        atStreamType = AUDIO_STREAM_DTMF;
-    } else {
+    switch (streamType) {
+    case AUDIO_STREAM_VOICE_CALL:
+    case AUDIO_STREAM_SYSTEM:
+    case AUDIO_STREAM_RING:
+    case AUDIO_STREAM_MUSIC:
+    case AUDIO_STREAM_ALARM:
+    case AUDIO_STREAM_NOTIFICATION:
+    case AUDIO_STREAM_BLUETOOTH_SCO:
+    case AUDIO_STREAM_DTMF:
+        atStreamType = (audio_stream_type_t) streamType;
+        break;
+    default:
         ALOGE("Error creating AudioTrack: unknown stream type.");
         return AUDIOTRACK_ERROR_SETUP_INVALIDSTREAMTYPE;
     }
@@ -227,7 +214,7 @@
 
     // for the moment 8bitPCM in MODE_STATIC is not supported natively in the AudioTrack C++ class
     // so we declare everything as 16bitPCM, the 8->16bit conversion for MODE_STATIC will be handled
-    // in android_media_AudioTrack_native_write()
+    // in android_media_AudioTrack_native_write_byte()
     if ((audioFormat == javaAudioTrackFields.PCM8) 
         && (memoryMode == javaAudioTrackFields.MODE_STATIC)) {
         ALOGV("android_media_AudioTrack_native_setup(): requesting MODE_STATIC for 8bit \
@@ -519,13 +506,13 @@
 }
 
 // ----------------------------------------------------------------------------
-static jint android_media_AudioTrack_native_write(JNIEnv *env,  jobject thiz,
+static jint android_media_AudioTrack_native_write_byte(JNIEnv *env,  jobject thiz,
                                                   jbyteArray javaAudioData,
                                                   jint offsetInBytes, jint sizeInBytes,
                                                   jint javaAudioFormat) {
     jbyte* cAudioData = NULL;
     AudioTrack *lpTrack = NULL;
-    //ALOGV("android_media_AudioTrack_native_write(offset=%d, sizeInBytes=%d) called",
+    //ALOGV("android_media_AudioTrack_native_write_byte(offset=%d, sizeInBytes=%d) called",
     //    offsetInBytes, sizeInBytes);
     
     // get the audio track to load with samples
@@ -567,7 +554,7 @@
                                                   jshortArray javaAudioData,
                                                   jint offsetInShorts, jint sizeInShorts,
                                                   jint javaAudioFormat) {
-    return (android_media_AudioTrack_native_write(env, thiz,
+    return (android_media_AudioTrack_native_write_byte(env, thiz,
                                                  (jbyteArray) javaAudioData,
                                                  offsetInShorts*2, sizeInShorts*2,
                                                  javaAudioFormat)
@@ -764,24 +751,20 @@
     // convert the stream type from Java to native value
     // FIXME: code duplication with android_media_AudioTrack_native_setup()
     audio_stream_type_t nativeStreamType;
-    if (javaStreamType == javaAudioTrackFields.STREAM_VOICE_CALL) {
-        nativeStreamType = AUDIO_STREAM_VOICE_CALL;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_SYSTEM) {
-        nativeStreamType = AUDIO_STREAM_SYSTEM;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_RING) {
-        nativeStreamType = AUDIO_STREAM_RING;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_MUSIC) {
-        nativeStreamType = AUDIO_STREAM_MUSIC;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_ALARM) {
-        nativeStreamType = AUDIO_STREAM_ALARM;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_NOTIFICATION) {
-        nativeStreamType = AUDIO_STREAM_NOTIFICATION;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_BLUETOOTH_SCO) {
-        nativeStreamType = AUDIO_STREAM_BLUETOOTH_SCO;
-    } else if (javaStreamType == javaAudioTrackFields.STREAM_DTMF) {
-        nativeStreamType = AUDIO_STREAM_DTMF;
-    } else {
+    switch (javaStreamType) {
+    case AUDIO_STREAM_VOICE_CALL:
+    case AUDIO_STREAM_SYSTEM:
+    case AUDIO_STREAM_RING:
+    case AUDIO_STREAM_MUSIC:
+    case AUDIO_STREAM_ALARM:
+    case AUDIO_STREAM_NOTIFICATION:
+    case AUDIO_STREAM_BLUETOOTH_SCO:
+    case AUDIO_STREAM_DTMF:
+        nativeStreamType = (audio_stream_type_t) javaStreamType;
+        break;
+    default:
         nativeStreamType = AUDIO_STREAM_DEFAULT;
+        break;
     }
 
     if (AudioSystem::getOutputSamplingRate(&afSamplingRate, nativeStreamType) != NO_ERROR) {
@@ -851,7 +834,7 @@
                                          (void *)android_media_AudioTrack_native_setup},
     {"native_finalize",      "()V",      (void *)android_media_AudioTrack_native_finalize},
     {"native_release",       "()V",      (void *)android_media_AudioTrack_native_release},
-    {"native_write_byte",    "([BIII)I", (void *)android_media_AudioTrack_native_write},
+    {"native_write_byte",    "([BIII)I", (void *)android_media_AudioTrack_native_write_byte},
     {"native_write_short",   "([SIII)I", (void *)android_media_AudioTrack_native_write_short},
     {"native_setVolume",     "(FF)V",    (void *)android_media_AudioTrack_set_volume},
     {"native_get_native_frame_count",
@@ -987,41 +970,6 @@
         return -1;
     }
  
-    // Get the stream types from the AudioManager class
-    jclass audioManagerClass = NULL;
-    audioManagerClass = env->FindClass(JAVA_AUDIOMANAGER_CLASS_NAME);
-    if (audioManagerClass == NULL) {
-       ALOGE("Can't find %s", JAVA_AUDIOMANAGER_CLASS_NAME);
-       return -1;
-    }
-    if ( !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_VOICE_CALL_NAME, &(javaAudioTrackFields.STREAM_VOICE_CALL))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_MUSIC_NAME, &(javaAudioTrackFields.STREAM_MUSIC))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_SYSTEM_NAME, &(javaAudioTrackFields.STREAM_SYSTEM))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_RING_NAME, &(javaAudioTrackFields.STREAM_RING))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_ALARM_NAME, &(javaAudioTrackFields.STREAM_ALARM))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_NOTIFICATION_NAME, &(javaAudioTrackFields.STREAM_NOTIFICATION))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_BLUETOOTH_SCO_NAME, &(javaAudioTrackFields.STREAM_BLUETOOTH_SCO))
-          || !android_media_getIntConstantFromClass(env, audioManagerClass,
-               JAVA_AUDIOMANAGER_CLASS_NAME,
-               JAVA_CONST_STREAM_DTMF_NAME, &(javaAudioTrackFields.STREAM_DTMF))) {
-       // error log performed in android_media_getIntConstantFromClass()
-       return -1;
-    }
-
     return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
 }
 
diff --git a/core/jni/android_media_JetPlayer.cpp b/core/jni/android_media_JetPlayer.cpp
index 85c0a9c..9f9bedb 100644
--- a/core/jni/android_media_JetPlayer.cpp
+++ b/core/jni/android_media_JetPlayer.cpp
@@ -523,7 +523,7 @@
             jetPlayerClass,
             JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME, "I");
     if (javaJetPlayerFields.nativePlayerInJavaObj == NULL) {
-        ALOGE("Can't find AudioTrack.%s", JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME);
+        ALOGE("Can't find JetPlayer.%s", JAVA_NATIVEJETPLAYERINJAVAOBJ_FIELD_NAME);
         return -1;
     }
 
diff --git a/core/jni/android_util_Log.cpp b/core/jni/android_util_Log.cpp
index a57aad7..2895171 100644
--- a/core/jni/android_util_Log.cpp
+++ b/core/jni/android_util_Log.cpp
@@ -27,6 +27,7 @@
 #include "JNIHelp.h"
 #include "utils/misc.h"
 #include "android_runtime/AndroidRuntime.h"
+#include "android_util_Log.h"
 
 #define MIN(a,b) ((a<b)?a:b)
 
@@ -56,40 +57,48 @@
     return levels.info;
 }
 
+static jboolean isLoggable(const char* tag, jint level) {
+    String8 key;
+    key.append(LOG_NAMESPACE);
+    key.append(tag);
+
+    char buf[PROPERTY_VALUE_MAX];
+    if (property_get(key.string(), buf, "") <= 0) {
+        return false;
+    }
+
+    int logLevel = toLevel(buf);
+    return logLevel >= 0 && level >= logLevel;
+}
+
 static jboolean android_util_Log_isLoggable(JNIEnv* env, jobject clazz, jstring tag, jint level)
 {
-    int len;
-    char key[PROPERTY_KEY_MAX];
-    char buf[PROPERTY_VALUE_MAX];
-
     if (tag == NULL) {
         return false;
     }
 
-    jboolean result = false;
-
     const char* chars = env->GetStringUTFChars(tag, NULL);
+    if (!chars) {
+        return false;
+    }
 
+    jboolean result = false;
     if ((strlen(chars)+sizeof(LOG_NAMESPACE)) > PROPERTY_KEY_MAX) {
         char buf2[200];
         snprintf(buf2, sizeof(buf2), "Log tag \"%s\" exceeds limit of %d characters\n",
                 chars, PROPERTY_KEY_MAX - sizeof(LOG_NAMESPACE));
 
-        // release the chars!
-        env->ReleaseStringUTFChars(tag, chars);
-
         jniThrowException(env, "java/lang/IllegalArgumentException", buf2);
-        return false;
     } else {
-        strncpy(key, LOG_NAMESPACE, sizeof(LOG_NAMESPACE)-1);
-        strcpy(key + sizeof(LOG_NAMESPACE) - 1, chars);
+        result = isLoggable(chars, level);
     }
 
     env->ReleaseStringUTFChars(tag, chars);
+    return result;
+}
 
-    len = property_get(key, buf, "");
-    int logLevel = toLevel(buf);
-    return (logLevel >= 0 && level >= logLevel) ? true : false;
+bool android_util_Log_isVerboseLogEnabled(const char* tag) {
+    return isLoggable(tag, levels.verbose);
 }
 
 /*
diff --git a/core/java/android/nfc/LlcpPacket.aidl b/core/jni/android_util_Log.h
similarity index 67%
rename from core/java/android/nfc/LlcpPacket.aidl
rename to core/jni/android_util_Log.h
index 80f424d..4804a854 100644
--- a/core/java/android/nfc/LlcpPacket.aidl
+++ b/core/jni/android_util_Log.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2012 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,9 +14,17 @@
  * limitations under the License.
  */
 
-package android.nfc;
+#ifndef _ANDROID_UTIL_LOG_H
+#define _ANDROID_UTIL_LOG_H
 
-/**
- * @hide
- */
-parcelable LlcpPacket;
\ No newline at end of file
+#include <jni.h>
+#include <JNIHelp.h>
+
+
+namespace android {
+
+bool android_util_Log_isVerboseLogEnabled(const char* tag);
+
+}
+
+#endif // _ANDROID_UTIL_LOG_H
diff --git a/core/jni/android_view_GLES20Canvas.cpp b/core/jni/android_view_GLES20Canvas.cpp
index 3bf28eb..064dcac 100644
--- a/core/jni/android_view_GLES20Canvas.cpp
+++ b/core/jni/android_view_GLES20Canvas.cpp
@@ -585,10 +585,10 @@
 
     const jchar* glyphs = value->getGlyphs();
     size_t glyphsCount = value->getGlyphsCount();
+    if (count < int(glyphsCount)) glyphsCount = count;
     int bytesCount = glyphsCount * sizeof(jchar);
 
-    renderer->drawPosText((const char*) glyphs, bytesCount,
-            count < int(glyphsCount) ? count : glyphsCount, positions, paint);
+    renderer->drawPosText((const char*) glyphs, bytesCount, glyphsCount, positions, paint);
 }
 
 static void android_view_GLES20Canvas_drawPosTextArray(JNIEnv* env, jobject clazz,
diff --git a/core/res/res/anim/screen_rotate_180_enter.xml b/core/res/res/anim/screen_rotate_180_enter.xml
index 95cc562..470416b 100644
--- a/core/res/res/anim/screen_rotate_180_enter.xml
+++ b/core/res/res/anim/screen_rotate_180_enter.xml
@@ -19,16 +19,10 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
-    <scale android:fromXScale="1.0" android:toXScale="1.0"
-            android:fromYScale=".9" android:toYScale="1.0"
-            android:pivotX="50%p" android:pivotY="50%p"
-            android:fillEnabled="true" android:fillBefore="true"
+    <rotate android:fromDegrees="180" android:toDegrees="0"
+            android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
-            android:startOffset="160"
-            android:duration="300" />
-    <alpha android:fromAlpha="0" android:toAlpha="1.0"
-            android:fillEnabled="true" android:fillBefore="true"
-            android:interpolator="@interpolator/decelerate_quint"
-            android:startOffset="160"
-            android:duration="300"/>
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/screen_rotate_180_exit.xml b/core/res/res/anim/screen_rotate_180_exit.xml
index d3dd4c0..58a1868 100644
--- a/core/res/res/anim/screen_rotate_180_exit.xml
+++ b/core/res/res/anim/screen_rotate_180_exit.xml
@@ -19,12 +19,10 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
-    <scale android:fromXScale="1.0" android:toXScale="1.0"
-            android:fromYScale="1.0" android:toYScale="0.0"
-            android:pivotX="50%p" android:pivotY="50%p"
-            android:interpolator="@interpolator/accelerate_cubic"
-            android:duration="160" />
-    <alpha android:fromAlpha="1.0" android:toAlpha="0"
-            android:interpolator="@interpolator/decelerate_cubic"
-            android:duration="160"/>
+    <rotate android:fromDegrees="0" android:toDegrees="-180"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
 </set>
\ No newline at end of file
diff --git a/core/res/res/anim/screen_rotate_finish_enter.xml b/core/res/res/anim/screen_rotate_finish_enter.xml
new file mode 100644
index 0000000..849aa66
--- /dev/null
+++ b/core/res/res/anim/screen_rotate_finish_enter.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shareInterpolator="false">
+    <scale android:fromXScale="1.0" android:toXScale="1.25"
+            android:fromYScale="1.0" android:toYScale="1.25"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="100%p" android:toXScale="100%"
+            android:fromYScale="100%p" android:toYScale="100%"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+</set>
diff --git a/core/res/res/anim/screen_rotate_finish_exit.xml b/core/res/res/anim/screen_rotate_finish_exit.xml
new file mode 100644
index 0000000..7f70dbc
--- /dev/null
+++ b/core/res/res/anim/screen_rotate_finish_exit.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shareInterpolator="false">
+    <scale android:fromXScale="1.0" android:toXScale="1.25"
+            android:fromYScale="1.0" android:toYScale="1.25"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <!--
+    <scale android:fromXScale="100%" android:toXScale="100%p"
+            android:fromYScale="100%" android:toYScale="100%p"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
+    <alpha android:fromAlpha="1.0" android:toAlpha="0"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+</set>
diff --git a/core/res/res/anim/screen_rotate_minus_90_enter.xml b/core/res/res/anim/screen_rotate_minus_90_enter.xml
index 61aa72a..d2aebc9 100644
--- a/core/res/res/anim/screen_rotate_minus_90_enter.xml
+++ b/core/res/res/anim/screen_rotate_minus_90_enter.xml
@@ -19,8 +19,44 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
+    <!--
+    <scale android:fromXScale="1.0" android:toXScale="0.565"
+            android:fromYScale="1.0" android:toYScale="0.565"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="1.0" android:toXScale="1.777777777"
+            android:fromYScale="1.0" android:toYScale="1.777777777"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="@android:integer/config_longAnimTime"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="100%p" android:toXScale="100%"
+            android:fromYScale="100%p" android:toYScale="100%"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:startOffset="@android:integer/config_longAnimTime"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
+    <!--
+    <scale android:fromXScale="100%p" android:toXScale="100%"
+            android:fromYScale="100%p" android:toYScale="100%"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
     <rotate android:fromDegrees="-90" android:toDegrees="0"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
             android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/screen_rotate_minus_90_exit.xml b/core/res/res/anim/screen_rotate_minus_90_exit.xml
index 65294f6..c7c38cd 100644
--- a/core/res/res/anim/screen_rotate_minus_90_exit.xml
+++ b/core/res/res/anim/screen_rotate_minus_90_exit.xml
@@ -19,16 +19,51 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
+    <!--
+    <scale android:fromXScale="1.0" android:toXScale="0.565"
+            android:fromYScale="1.0" android:toYScale="0.565"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="1.0" android:toXScale="1.777777777"
+            android:fromYScale="1.0" android:toYScale="1.777777777"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="@android:integer/config_longAnimTime"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="100%" android:toXScale="100%p"
+            android:fromYScale="100%" android:toYScale="100%p"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:startOffset="@android:integer/config_longAnimTime"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="@android:integer/config_longAnimTime"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
+    <!--
     <scale android:fromXScale="100%" android:toXScale="100%p"
             android:fromYScale="100%" android:toYScale="100%p"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
             android:duration="@android:integer/config_mediumAnimTime" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
     <rotate android:fromDegrees="0" android:toDegrees="90"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
-            android:duration="@android:integer/config_mediumAnimTime" />
-    <alpha android:fromAlpha="1.0" android:toAlpha="0"
-            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
             android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/screen_rotate_plus_90_enter.xml b/core/res/res/anim/screen_rotate_plus_90_enter.xml
index 53b0ccd..63d7043 100644
--- a/core/res/res/anim/screen_rotate_plus_90_enter.xml
+++ b/core/res/res/anim/screen_rotate_plus_90_enter.xml
@@ -19,8 +19,44 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
+    <!--
+    <scale android:fromXScale="1.0" android:toXScale="0.565"
+            android:fromYScale="1.0" android:toYScale="0.565"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="1.0" android:toXScale="1.777777777"
+            android:fromYScale="1.0" android:toYScale="1.777777777"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="75"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="100%p" android:toXScale="100%"
+            android:fromYScale="100%p" android:toYScale="100%"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:startOffset="75"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
+    <!--
+    <scale android:fromXScale="100%p" android:toXScale="100%"
+            android:fromYScale="100%p" android:toYScale="100%"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
     <rotate android:fromDegrees="90" android:toDegrees="0"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
             android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/screen_rotate_plus_90_exit.xml b/core/res/res/anim/screen_rotate_plus_90_exit.xml
index 63c0b09..ea48c81 100644
--- a/core/res/res/anim/screen_rotate_plus_90_exit.xml
+++ b/core/res/res/anim/screen_rotate_plus_90_exit.xml
@@ -19,16 +19,51 @@
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="false">
+    <!--
+    <scale android:fromXScale="1.0" android:toXScale="0.565"
+            android:fromYScale="1.0" android:toYScale="0.565"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="1.0" android:toXScale="1.777777777"
+            android:fromYScale="1.0" android:toYScale="1.777777777"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="75"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+    <scale android:fromXScale="100%" android:toXScale="100%p"
+            android:fromYScale="100%" android:toYScale="100%p"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:startOffset="75"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:startOffset="75"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
+    <!--
     <scale android:fromXScale="100%" android:toXScale="100%p"
             android:fromYScale="100%" android:toYScale="100%p"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
             android:duration="@android:integer/config_mediumAnimTime" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="false" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime" />
+    -->
     <rotate android:fromDegrees="0" android:toDegrees="-90"
             android:pivotX="50%" android:pivotY="50%"
             android:interpolator="@interpolator/decelerate_quint"
-            android:duration="@android:integer/config_mediumAnimTime" />
-    <alpha android:fromAlpha="1.0" android:toAlpha="0"
-            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
             android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/screen_rotate_start_enter.xml b/core/res/res/anim/screen_rotate_start_enter.xml
new file mode 100644
index 0000000..e3f48e4d
--- /dev/null
+++ b/core/res/res/anim/screen_rotate_start_enter.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shareInterpolator="false">
+    <scale android:fromXScale="1.0" android:toXScale="0.8"
+            android:fromYScale="1.0" android:toYScale="0.8"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+</set>
diff --git a/core/res/res/anim/screen_rotate_start_exit.xml b/core/res/res/anim/screen_rotate_start_exit.xml
new file mode 100644
index 0000000..e3f48e4d
--- /dev/null
+++ b/core/res/res/anim/screen_rotate_start_exit.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2012, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shareInterpolator="false">
+    <scale android:fromXScale="1.0" android:toXScale="0.8"
+            android:fromYScale="1.0" android:toYScale="0.8"
+            android:pivotX="50%" android:pivotY="50%"
+            android:interpolator="@interpolator/decelerate_quint"
+            android:fillEnabled="true"
+            android:fillBefore="true" android:fillAfter="true"
+            android:duration="@android:integer/config_mediumAnimTime"/>
+</set>
diff --git a/core/res/res/menu/webview_copy.xml b/core/res/res/menu/webview_copy.xml
index 31bcec5..6a1aa51 100644
--- a/core/res/res/menu/webview_copy.xml
+++ b/core/res/res/menu/webview_copy.xml
@@ -19,11 +19,21 @@
         android:title="@string/selectAll"
         android:showAsAction="ifRoom|withText"
         />
+    <item android:id="@+id/cut"
+        android:icon="?android:attr/actionModeCutDrawable"
+        android:title="@string/cut"
+        android:showAsAction="ifRoom|withText"
+        />
     <item android:id="@+id/copy"
         android:icon="?android:attr/actionModeCopyDrawable"
         android:title="@string/copy"
         android:showAsAction="ifRoom|withText"
         />
+    <item android:id="@+id/paste"
+        android:icon="?android:attr/actionModePasteDrawable"
+        android:title="@string/paste"
+        android:showAsAction="ifRoom|withText"
+        />
     <item android:id="@+id/share"
         android:icon="?android:attr/actionModeShareDrawable"
         android:title="@string/share"
diff --git a/core/res/res/values/styles_device_defaults.xml b/core/res/res/values/styles_device_defaults.xml
index 7f1891e..6419872 100644
--- a/core/res/res/values/styles_device_defaults.xml
+++ b/core/res/res/values/styles_device_defaults.xml
@@ -687,7 +687,7 @@
     <style name="AlertDialog.DeviceDefault" parent="AlertDialog.Holo">
 
     </style>
-    <style name="AlertDialog.DeviceDefault.Light" parent="AlertDialog.DeviceDefault.Light" >
+    <style name="AlertDialog.DeviceDefault.Light" parent="AlertDialog.Holo.Light" >
 
     </style>
 
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 94d2c38..8135986 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -411,13 +411,13 @@
     <style name="Theme.DeviceDefault.Dialog.Alert" parent="Theme.Holo.Dialog.Alert">
         <item name="windowTitleStyle">@android:style/DialogWindowTitle.DeviceDefault</item>
     </style>
-    <style name="Theme.DeviceDefault.Light.Dialog.Alert" parent="Theme.DeviceDefault.Light.Dialog.Alert">
+    <style name="Theme.DeviceDefault.Light.Dialog.Alert" parent="Theme.Holo.Light.Dialog.Alert">
         <item name="windowTitleStyle">@android:style/DialogWindowTitle.DeviceDefault.Light</item>
     </style>
-    <style name="Theme.DeviceDefault.SearchBar" parent="Theme.DeviceDefault.SearchBar">
+    <style name="Theme.DeviceDefault.SearchBar" parent="Theme.Holo.SearchBar">
 
     </style>
-    <style name="Theme.DeviceDefault.Light.SearchBar" parent="Theme.DeviceDefault.Light.SearchBar">
+    <style name="Theme.DeviceDefault.Light.SearchBar" parent="Theme.Holo.Light.SearchBar">
 
     </style>
 
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 7f3894d..ee4c48e 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -271,7 +271,8 @@
       </li>
       <li class="toggle-list">
         <div><a href="<?cs var:toroot ?>guide/topics/renderscript/index.html">
-          <span class="en">RenderScript</span></a>
+          <span class="en">Renderscript</span></a>
+          <span class="new">updated</span>
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>guide/topics/renderscript/graphics.html">
@@ -282,6 +283,10 @@
                 <span class="en">Compute</span>
               </a>
           </li>
+          <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference.html">
+                <span class="en">Runtime API Reference</span>
+              </a>
+          </li>
         </ul>
       </li>
 
@@ -360,6 +365,9 @@
           <li><a href="<?cs var:toroot ?>guide/topics/nfc/advanced-nfc.html">Advanced NFC</a></li>
         </ul>
       </li>
+      <li><a href="<?cs var:toroot?>guide/topics/wireless/wifip2p.html">
+            <span class="en">Wi-Fi Direct</span></a> <span class="new">new!</span>
+          </li>
       <li class="toggle-list">
           <div><a href="<?cs var:toroot?>guide/topics/usb/index.html">
             <span class="en">USB</span></a>
diff --git a/docs/html/guide/publishing/preparing.jd b/docs/html/guide/publishing/preparing.jd
index 4d3bffa..83aa5ee 100644
--- a/docs/html/guide/publishing/preparing.jd
+++ b/docs/html/guide/publishing/preparing.jd
@@ -117,6 +117,9 @@
 certificate requirements, see <a href="{@docRoot}guide/publishing/app-signing.html#cert">Obtain a
 suitable private key</a>.</p>
 
+<p class="caution"><strong>Important:</strong> Your application must be signed with a cryptographic
+key whose validity period ends after 22 October 2033.</p>
+
 <p>You may also have to obtain other release keys if your application accesses a service or uses a
 third-party library that requires you to use a key that is based on your private key. For example,
 if your application uses the <a
diff --git a/docs/html/guide/publishing/publishing.jd b/docs/html/guide/publishing/publishing.jd
index fa677e6..49b34d8 100644
--- a/docs/html/guide/publishing/publishing.jd
+++ b/docs/html/guide/publishing/publishing.jd
@@ -7,9 +7,9 @@
 <h2>Quickview</h2>
 
 <ul>
-<li>You can publish your application using a hosted service such as Android Market or through a web server.</li>
-<li>Before you publish, make sure you have prepared your application properly.</li>
-<li>Android Market makes it easy for users of Android-powered devices to see and download your application.</li>
+<li>Learn how to publish and update apps on Android Market.</li>
+<li>Find out how to create links to apps that are published on Android Market.</li>
+<li>Learn about Android Market features.</li>
 </ul>
 
 
@@ -17,97 +17,201 @@
 
 <ol>
 <li><a href="#overview">About Android Market</a>
+<li><A href="#marketpublish">Publishing Apps on Android Market</a></li>
 <li><a href="#marketupgrade">Publishing Updates on Android Market</a></li>
 <li><a href="#marketLicensing">Using Android Market Licensing Service</a></li>
+<li><a href="#marketinappbilling">Using Android Market In-app Billing</a></li>
 <li><a href="#marketintent">Linking to Your Apps on Android Market</a>
   <ol>
     <li><a href="#OpeningDetails">Opening an app's details page</a></li>
     <li><a href="#PerformingSearch">Performing a search</a></li>
     <li><a href="#BuildaButton">Build an Android Market button</a></li>
     <li><a href="#UriSummary">Summary of URI formats</a></li>
-  </ol>  
+  </ol>
 </li>
 </ol>
 
 <h2>See also</h2>
 
 <ol>
-<li><a href="{@docRoot}guide/publishing/licensing.html">Application Licensing</a></li>
-<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish</a></li>
+<li><a href="{@docRoot}guide/publishing/publishing_overview.html">Publishing Overview</a></li>
+<li><a href="{@docRoot}guide/publishing/preparing.html">Preparing for Release</a></li>
 </ol>
 
 <div id="qv-extra">
   <img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png">
   <div id="qv-sub-rule">
     <img src="{@docRoot}assets/images/icon_market.jpg" style="float:left;margin:0;padding:0 5px;">
-    <h2 style="color:#669999;">Interested in publishing your app on Android Market?</h2>
-    <p><a href="http://market.android.com/publish">Go to Android Market</a> to
-create a developer account and upload your application. For more information about the
-required assets, listing details, and options, see <a
-href="http://market.android.com/support/bin/answer.py?answer=113469">Uploading
-applications</a>.</p>
+    <h2 style="color:#669999;">Already know about Android Market and want to get started?</h2>
+    <p>Go to <a href="http://market.android.com/publish">Android Market</a>, create a developer
+account, and upload your application. For more information about required assets, listing details,
+and publishing options, see <a
+href="http://market.android.com/support/bin/answer.py?answer=113469">Upload
+Applications</a>.</p>
   </div>
 </div>
 
 </div>
 </div>
 
-<p>If you've followed the steps outlined in <a
-href="{@docRoot}guide/publishing/preparing.html">Preparing to Publish</a>, the result of the process
-is a compiled {@code .apk} file that is signed with your private release key. Your application is
-now ready to be published publicly so users can install it.</p>
+<p>One of the most effective ways to get your application into users' hands is to
+publish it on an application marketplace like Android Market. Publishing on Android Market is a
+straightforward process that you can do in just a few simple steps&mdash;register, configure,
+upload, and publish. Registration takes only a few minutes and needs to be done only once.
+The configuration and publishing steps can all be done through the Android Market Developer Console
+after you register as an Android Market developer.</p>
 
-<p>You can publish your application and allow users to install it any way you choose, including
-from your own web server. This document provides information about publishing your Android
-application with Android Market.</p>
+<p>To start publishing on Android Market, first read this topic and then go to the <a
+href="https://market.android.com/publish/signup">Android Market publisher site</a> and register as
+an Android Market developer.</p>
 
 
 <h2 id="overview">About Android Market</h2>
 
-<p>Android Market is a service that makes it easy for users to find and download Android
-applications to their Android-powered devices, either from the Android Market application on their
-device or from the Android Market web site (<a
-href="http://market.android.com">market.android.com</a>). As a developer, you can use Android Market
-to distribute your applications to users on all types of Android-powered devices, all around the
-world.</p>
+<p>Android Market is a robust publishing platform that helps you publicize, sell, and distribute
+your Android applications to users around the world. When you release your applications through
+Android Market you have access to a suite of developer tools that let you analyze your sales,
+identify market trends, and control who your applications are being distributed to. You also have
+access to several revenue-enhancing features, such as <a
+href="{@docRoot}guide/market/billing/index.html">in-app billing</a> and
+<a href="{@docRoot}guide/publishing/licensing.html">application licensing</a>.</p>
 
-<p>To publish your application on Android Market, you first need to register
-with the service using a Google account and agree to the terms of service.
-Once you are registered, you can upload your application to the service whenever
-you want, update it as many times as you want, and then publish it when you are ready.
-Once published, users can see your application, download it, and rate it. </p>
+<p>Before you can publish applications on Android Market, you need to <a
+href="http://market.android.com/publish">register</a> as an Android Market developer. During the
+registration process you will need to create a developer profile, pay a registration fee, and agree
+to the <a href="http://www.android.com/us/developer-distribution-agreement.html">Android Market
+Developer Distribution Agreement</a>. After you register you can access the Android Market Developer
+Console, where you can upload applications, configure publishing options, and monitor publishing
+data. If you want to sell your applications or use the in-app billing feature, you will also need
+to set up a Google Checkout merchant account. For more information about the registration process,
+see <a href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113468">
+Developer Registration</a>.</p>
 
-<p>To register as an Android Market developer and get started with publishing,
-visit the Android Market publisher site: </p>
+<h2 id="marketpublish">Publishing Apps on Android Market</h2>
 
-<p style="margin-left:3em;"><a
-href="http://market.android.com/publish">http://market.android.com/publish</a>
+<p>Publishing your application on Android Market is a simple process that involves three basic
+tasks (see figure 1):</p>
+
+<ul>
+  <li>Creating various graphical assets that
+accompany your app on Android Market.</li>
+  <li>Using the Android Market <a
+href="http://market.android.com/publish">Developer Console</a> to configure publishing options,
+specify listing details, and upload your app and graphical assets to Android Market.</li>
+  <li>Reviewing your publishing settings and changing the release
+status of your app from Unpublished to Published.</li>
+</ul>
+
+<img src="{@docRoot}images/publishing/publishing_android_market.png"
+     alt="Shows the three steps that are required to publish on Android Market"
+     height="168"
+     id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> To publish apps on Android Market you must first <a
+href="{@docRoot}guide/publishing/preparing.html">prepare your app for release</a> and then perform
+three simple tasks.
 </p>
 
-<p>If you plan to publish your application on Android Market, you must make sure
-that it meets the requirements listed below, which are enforced by the Market
-server when you upload the application.</p>
+<p class="caution"><strong>Important:</strong> You must <a
+href="{@docRoot}guide/publishing/preparing.html">prepare your application for release</a> before you
+can publish it on Android Market. When you prepare your application for release you configure it for
+release and build it in release mode. Building in release mode signs your application's {@code .apk}
+file with your private release key. You cannot publish an application on Android Market unless it is
+signed with your own private release key.</p>
 
-<div class="special">
-<p>Requirements enforced by the Android Market server:</p>
-<ol>
-<li>Your application must be signed with a cryptographic private key whose
-validity period ends after <span style="color:red">22 October 2033</span>. </li>
-<li>Your application must define both an <code>android:versionCode</code> and an
-<code>android:versionName</code> attribute in the
+<h3>Preparing promotional materials</h3>
+
+<p>To fully leverage the marketing and publicity capabilities of Android Market, you need to create
+several graphical assets that accompany your app on Android Market, such as screenshots, videos,
+promotional graphics, and promotional text. At a minimum you must provide two screenshots of your
+application and a high resolution application icon. The screenshots are displayed on the details
+page for your application in Android Market, and the high resolution application icon is displayed
+in various locations throughout Android Market. The high resolution icon does not replace the
+launcher icon for your application, rather, it serves as a supplemental icon and should look
+the same as your launcher icon. Promotional video,
+graphics, and text are optional, although we strongly recommended that you prepare these for your
+app. For more information about the graphic assets that accompany your application, see <a
+href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1078870">Graphic
+Assets for your Application</a>.</p>
+
+<h3>Configuring options and uploading assets</h3>
+
+<p>Android Market lets you target your application to a worldwide pool of users and devices. To
+reach these users you can use the Android Market Developer Console to configure various publishing
+options and listing details for your app. For example, you can choose the <a
+href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138294&topic=
+2365624&ctx=topic">countries</a> you want to reach, the listing languages you want to use, and the
 <a
-href="{@docRoot}guide/topics/manifest/manifest-element.html"><code>&lt;manifest&gt;</code></a>
-element of its manifest file. The server uses the <code>android:versionCode</code> as
-the basis for identifying the application internally and handling updates, and
-it displays the <code>android:versionName</code> to users as the application's
-version.</li>
-<li>Your application must define both an <code>android:icon</code> and an
-<code>android:label</code> attribute in the <a
-href="{@docRoot}guide/topics/manifest/application-element.html"><code>&lt;application&gt;</code></a>
-element of its manifest file.</li>
-</ol>
-</div>
+href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=138412&topic=
+15867&ctx=topic">price</a> you want to charge in each country. You can also configure listing
+details such as the application type, <a
+href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113475&topic=
+2365760&ctx=topic">category</a>, and <a
+href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=188189&topic=
+2364761&ctx=topic">content rating</a>. In addition, if you want to sell items within your app using
+the in-app billing feature, you can use the Developer Console to <a
+href="http://grendel.sea.corp.google.com:48014/guide/market/billing/billing_admin.html#billing-list
+- setup">create a product list</a> and control which items are available for purchase in your
+app.</p>
 
+<p>When you are finished setting publishing options and listing details, you can upload your assets
+and your application to Android Market. You can also upload your application as a draft
+(unpublished) application, which lets you do final testing before you publish it for final
+release.</p>
+
+<p>To learn more about Android Market publishing settings, see the following resources:</p>
+
+<ul>
+  <li><a
+href="http://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=113469&topic=
+236562&ctx=topic">Upload Applications</a>&mdash;provides a summary of the publishing settings
+you can configure for an app.</li>
+  <li><a
+href="http://support.google.com/androidmarket/developer/bin/topic.py?hl=en&topic=15867">Selling
+Your Apps</a>&mdash;provides guidance about pricing, supported currencies, tax rates, and many
+other topics related to selling apps.</li>
+  <li><a
+href="https://support.google.com/androidmarket/developer/bin/answer.py?hl=en&answer=1169947&topic=
+15867&ctx=topic">Selling Apps in Multiple Currencies</a>&mdash;provides a description of how
+pricing, payouts, and exchange rates work.</li>
+</ul>
+
+<h3>Publishing your application</h3>
+
+<p>When you are satisfied that your publishing settings are correctly configured and your uploaded
+application is ready to be released to the public, you can simply click <strong>Publish</strong> in
+the Developer Console to make your app available for download
+around the world. Keep in mind, it can take several hours for your app to appear on Android
+Market after you click <strong>Publish</strong> in the Developer Console.</p>
+
+<h3>Controlling Distribution to Devices</h3>
+
+<p>If your application targets different device configurations, you can control which Android-powered
+devices have access to your application on Android Market by
+using Android Market filters. Filtering compares device configurations that you declare in your
+app's manifest file to the configuration defined by a device. For example, if you declare the camera
+filter in your manifest, only those devices that have a camera will see your app on Android
+Market. Filters must be configured in your application's manifest file when you are <a
+href="{@docRoot}guide/publishing/preparing.html">preparing your app for release</a> (that is, before
+you upload your app to Android Market). For more information, see <a
+href="{@docRoot}guide/appendix/market-filters.html">Market Filters</a>.</p>
+
+<p>You can also use the multiple APK feature to distribute different {@code .apk} files under the same
+application listing and the same package name; however, you should use this option only as a last
+resort. Android applications usually run on most compatible devices with a single APK, by supplying
+alternative resources for different configurations (for example, different layouts for different screen
+sizes) and the Android system selects the appropriate resources for the device at runtime. In a
+few cases, however, a single APK is unable to support all device configurations, because alternative
+resources make the APK file too big (greater than 50MB) or other technical challenges prevent a
+single APK from working on all devices. Although we encourage you to develop and publish a single
+APK that supports as many device configurations as possible, doing so is sometimes
+not possible. To help you publish your application for as many devices as possible, Android Market
+allows you to publish multiple APKs under the same application listing. Android Market then supplies
+each APK to the appropriate devices based on configuration support you've declared in the manifest
+file of each APK. To use this feature, you need to build your separate {@code .apk} files when you are <a
+href="{@docRoot}guide/publishing/preparing.html">preparing your app for release</a> (that is, before
+you upload your app to Android Market). For more information, see <a
+href="{@docRoot}guide/market/publishing/multiple-apks.html">Multiple APK Support</a>.</p>
 
 <h2 id="marketupgrade">Publishing Updates on Android Market</h2>
 
@@ -128,6 +232,9 @@
 consider it a new application, publish it as such, and will not offer it to existing users as an
 update.</p>
 
+<p>If you plan to publish your application on Android Market, you must make sure
+  that it meets the requirements listed below, which are enforced by the Market
+  server when you upload the application.</p>
 
 <h2 id="marketLicensing">Using Android Market Licensing Service</h2>
 
@@ -136,7 +243,7 @@
 Android Market Licensing, your applications can query Android Market at runtime
 to obtain the licensing status for the current user, then allow or disallow
 further use of the application as appropriate. Using the service, you can apply a flexible
-licensing policy on an application-by-application basis&mdash;each 
+licensing policy on an application-by-application basis&mdash;each
 application can enforce its licensing status in the way most appropriate
 for it. </p>
 
@@ -149,7 +256,31 @@
 use it in your application, read <a
 href="{@docRoot}guide/publishing/licensing.html">Application Licensing</a>.</p>
 
+<h2 id="marketinappbilling">Using Android Market In-app Billing</h2>
 
+<p><a href="{@docRoot}guide/market/billing/billing_overview.html">Android Market In-app Billing</a>
+is an Android Market service that lets you sell digital content in your applications. You can use
+the service to sell a wide range of content, including downloadable  content such as media files or
+photos, and virtual content such as game levels or potions.</p>
+
+<p>When you use Android Market's in-app billing service to sell an item, Android Market handles all
+billing details so your application never has to directly process any financial transactions.
+Android Market uses the same checkout service that is used for application purchases, so your users
+experience a consistent and familiar purchase flow (see figure 1). Also, the transaction fee for
+in-app purchases is the same as the transaction fee for application purchases (30%).</p>
+
+<p>Any application that you publish through Android Market can implement in-app billing. No special
+account or registration is required other than an Android Market publisher account and a Google
+Checkout Merchant account. Also, because the service uses no dedicated framework APIs, you can add
+in-app billing to any application that uses a minimum API level of 4 or higher.</p>
+
+<p>To help you integrate in-app billing into your application, the Android SDK provides a <a
+href="{@docRoot}guide/market/billing/billing_integrate.html#billing-download">sample application</a>
+that demonstrates a simple implementation of in-app billing. The sample application contains
+examples of billing-related classes you can use to implement in-app billing in your application. It
+also contains examples of the database, user interface, and business logic you might use to
+implement in-app billing. For more information about the in-app billing feature, see the
+<a href="{@docRoot}guide/market/billing/index.html">In-app Billing documentation</a>.</p>
 
 <h2 id="marketintent">Linking to Your Apps on Android Market</h2>
 
@@ -337,7 +468,7 @@
 Guidelines</a>.</p>
 
 <style type="text/css">
-  
+
 form.button-form {
   margin-top:2em;
 }
@@ -539,7 +670,7 @@
 
 <tr>
 <td>Display the details screen for a specific application</td>
-<td><code>http://market.android.com/details?id=&lt;package_name&gt;</code> 
+<td><code>http://market.android.com/details?id=&lt;package_name&gt;</code>
 <td><code>market://details?id=&lt;package_name&gt;</code></td>
 </tr>
 
diff --git a/docs/html/guide/publishing/publishing_overview.jd b/docs/html/guide/publishing/publishing_overview.jd
index e30360b..79199c5 100755
--- a/docs/html/guide/publishing/publishing_overview.jd
+++ b/docs/html/guide/publishing/publishing_overview.jd
@@ -134,7 +134,7 @@
 and features, coupled with numerous end-user community features, makes Android Market the premier
 marketplace for selling and buying Android applications.</p>
 
-<p>Releasing your application on Android Market is a simple process that involves four basic
+<p>Releasing your application on Android Market is a simple process that involves three basic
   steps:</p>
 
 <div class="figure" style="width:275px">
@@ -153,21 +153,16 @@
     create promotional materials for your application, such as screenshots, videos, graphics, and
     promotional text.</p>
   </li>
-  <li>Planning publishing options.
+  <li>Configuring options and uploading assets.
     <p>Android Market lets you target your application to a worldwide pool of users and devices.
-    Using various Android Market tools, you can choose the countries you want to reach, the
-    price you want to charge in each country, and the devices you want to target. You can also
-    use Android Market's filtering settings to target specific device features and capabilities.</p>
-  </li>
-  <li>Configuring publishing options and uploading assets.
-    <p>After you create your promotional materials and determine which publishing options are
-    suitable for your application, you can use the Android Market developer console to configure
-    those options and upload the promotional materials. You can also use the developer console to
-    upload your application as a draft (unpublished) application, which lets you do final
-    testing before you publish it for final release.</p>
+    By configuring various Android Market settings, you can choose the countries you want to
+    reach, the listing languages you want to use, and the price you want to charge in each
+    country. You can also configure listing details such as the application type, category, and
+    content rating. When you are done configuring options you can upload your promotional materials
+    and your application as a draft (unpublished) application.</p>
   </li>
   <li>Publishing the release version of your application.
-    <p>When you are satisfied that your publishing settings are correctly configured and your
+    <p>If you are satisfied that your publishing settings are correctly configured and your
     uploaded application is ready to be released to the public, you can simply click
     <strong>Publish</strong > in the developer console and within minutes your application will be
     live and available for download around the world.</p>
@@ -233,4 +228,4 @@
 <p>Releasing applications through email is convenient if you are sending your application to
 only a few trusted users, but it provides few protections from piracy and unauthorized
 distribution; that is, anyone you send your application to can simply forward it to someone else.
-else.
\ No newline at end of file
+else.
diff --git a/docs/html/guide/topics/graphics/hardware-accel.jd b/docs/html/guide/topics/graphics/hardware-accel.jd
index c8703a5..e3ff215 100644
--- a/docs/html/guide/topics/graphics/hardware-accel.jd
+++ b/docs/html/guide/topics/graphics/hardware-accel.jd
@@ -283,8 +283,6 @@
 
         <li>{@link android.graphics.Canvas#drawPicture drawPicture()}</li>
 
-        <li>{@link android.graphics.Canvas#drawPosText drawPosText()}</li>
-
         <li>{@link android.graphics.Canvas#drawTextOnPath drawTextOnPath()}</li>
 
         <li>{@link android.graphics.Canvas#drawVertices drawVertices()}</li>
@@ -318,9 +316,6 @@
         <li>{@link android.graphics.Canvas#drawBitmapMesh drawBitmapMesh()}: colors array is
         ignored</li>
 
-        <li>{@link android.graphics.Canvas#drawLines drawLines()}: anti-aliasing is not
-        supported</li>
-
         <li>{@link android.graphics.Canvas#setDrawFilter setDrawFilter()}: can be set, but is
         ignored</li>
       </ul>
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
index 8f08f59..e827f00 100644
--- a/docs/html/guide/topics/renderscript/compute.jd
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -1,38 +1,253 @@
 page.title=Compute
-parent.title=RenderScript
+parent.title=Renderscript
 parent.link=index.html
+
 @jd:body
 
-  <div id="qv-wrapper">
-    <div id="qv">
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
 
-      <h2>Related Samples</h2>
+    <ol>
+      <li>
+        <a href="#creating">Creating a Compute Renderscript</a>
 
-      <ol>
-        <li><a href="{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">Hello
-        Compute</a></li>
-        <li><a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a></li>
-      </ol>
-    </div>
+        <ol>
+          <li><a href="#creating-renderscript">Creating the Renderscript file</a></li>
+
+          <li><a href="#calling">Calling the Renderscript code</a></li>
+        </ol>
+      </li>
+    </ol>
+
+    <h2>Related Samples</h2>
+
+    <ol>
+      <li><a href="{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">Hello
+      Compute</a></li>
+
+      <li><a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a></li>
+    </ol>
   </div>
+</div>
 
-  <p>RenderScript exposes a set of compute APIs that you can use to do intensive computational operations.
-  You can use the compute APIs in the context of a graphics RenderScript such as calculating the
-  transformation of many geometric objects in a scene. You can also create a standalone compute RenderScript that does not
-  draw anything to the screen such as bitmap image processing for a photo editor application.
-  The RenderScript compute APIs are mainly defined in the <code>rs_cl.rsh</code> header</p>
-  
-  <p>Compute RenderScripts are simpler to setup and implement as there is no graphics rendering involved.
-  You can offload computational aspects of your application to RenderScript by creating a native RenderScript
-  file (.rs) and using the generated reflected layer class to call functions in the <code>.rs</code> file. 
+<p>Renderscript exposes a set of compute APIs that you can use to do intensive computational
+operations. You can use the compute APIs in the context of a graphics Renderscript such as
+calculating the positions of many objects in a scene. You can also create standalone compute
+Renderscripts such as one that does image processing for a photo editor application.</p>
 
-  <p>See the <a href="{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a>
-  sample in the Android SDK for more
-  information on how to create a simple compute RenderScript.</p>
-  <p>  
-  See the <a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a>
-  sample in the Android SDK for more
-  information on how to create a compute RenderScript that is used in a graphics RenderScript.
-  The compute RenderScript is contained in 
-  <a href="{@docRoot}resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/ball_physics.html">balls_physics.rs</a>.
-  </p>
\ No newline at end of file
+<p>Compute Renderscripts scale to the amount of
+processing cores available on the device. This is enabled through a function named
+<code>rsForEach()</code> (or the <code>forEach_root()</code> method at the Android framework level).
+that automatically partitions work across available processing cores on the device. 
+For now, compute Renderscripts can only take advantage of CPU
+cores, but in the future, they can potentially run on other types of processors such as GPUs and
+DSPs.</p>
+
+<h2 id="creating-renderscript">Creating a Compute Renderscript</h2>
+
+<p>Implementing a compute Renderscript creating a <code>.rs</code> file that contains
+your Renderscript code and calling it at the Android framework level with the
+<code>forEach_root()</code> or at the Renderscript runtime level with the
+<code>rsForEach()</code> function. The following diagram describes how a typical compute
+Renderscript is set up:</p><img src="{@docRoot}images/rs_compute.png">
+
+<p class="img-caption"><strong>Figure 1.</strong> Compute Renderscript overview</p>
+
+<p>The following sections describe how to create a simple compute Renderscript and use it in an
+Android application. This example uses the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute Renderscript
+sample</a> that is provided in the SDK as a guide (some code has been modified from its original
+form for simplicity).</p>
+
+<h3 id="creating-renderscript">Creating the Renderscript file</h3>
+
+<p>Your Renderscript code resides in <code>.rs</code> and <code>.rsh</code> files in the
+<code>&lt;project_root&gt;/src/</code> directory. This code contains the compute logic
+and declares all necessary variables and pointers.
+Every compute <code>.rs</code> file generally contains the following items:</p>
+
+<ul>
+  <li>A pragma declaration (<code>#pragma rs java_package_name(<em>package.name</em>)</code>)
+  that declares the package name of the <code>.java</code> reflection of this Renderscript.</li>
+
+  <li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of
+  Renderscript that you are using (1 is the only value for now).</li>
+
+  <li>A <code>root()</code> function that is the main worker function. The root function is
+  called by the <code>rsForEach</code> function, which allows the Renderscript code to be called and
+  executed on multiple cores if they are available. The <code>root()</code> function must return
+  <code>void</code> and accept the following arguments:
+
+    <ul>
+      <li>Pointers to memory allocations that are used for the input and output of the compute
+      Renderscript. Both of these pointers are required for Android 3.2 (API level 13) platform
+      versions or older. Android 4.0 (API level 14) and later requires one or both of these
+      allocations.</li>
+    </ul>
+
+    <p>The following arguments are optional, but both must be supplied if you choose to use
+    them:</p>
+
+    <ul>
+      <li>A pointer for user-defined data that the Renderscript might need to carry out
+      computations in addition to the necessary allocations. This can be a pointer to a simple
+      primitive or a more complex struct.</li>
+
+      <li>The size of the user-defined data.</li>
+    </ul>
+  </li>
+
+  <li>An optional <code>init()</code> function. This allows you to do any initialization 
+  before the <code>root()</code> function runs, such as initializing variables. This
+  function runs once and is called automatically when the Renderscript starts, before anything
+  else in your Renderscript.</li>
+
+  <li>Any variables, pointers, and structures that you wish to use in your Renderscript code (can
+  be declared in <code>.rsh</code> files if desired)</li>
+</ul>
+
+<p>The following code shows how the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html">
+mono.rs</a> file is implemented:</p>
+<pre>
+#pragma version(1)
+#pragma rs java_package_name(com.example.android.rs.hellocompute)
+
+//multipliers to convert a RGB colors to black and white
+const static float3 gMonoMult = {0.299f, 0.587f, 0.114f};
+
+void root(const uchar4 *v_in, uchar4 *v_out) {
+  //unpack a color to a float4
+  float4 f4 = rsUnpackColor8888(*v_in);
+  //take the dot product of the color and the multiplier
+  float3 mono = dot(f4.rgb, gMonoMult);
+  //repack the float to a color
+  *v_out = rsPackColorTo8888(mono);
+}
+</pre>
+
+<h3 id="calling">Calling the Renderscript code</h3>
+
+<p>You can do Renderscript to Renderscript calls with <code>rsForEach</code> in situations
+such as when a graphics Renderscript needs to do a lot of computational operations. The Renderscript
+<a href="{@docRoot}resources/samples/RenderScript/Balls/index.html">Balls</a> sample shows how
+this is setup. The <a href=
+"resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">balls.rs</a>
+graphics Renderscript calls the <a href=
+"resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">balls_physics.rs</a>
+compute Renderscript to calculate the location of the balls that are rendered to the screen.</p>
+
+<p>Another way to use a compute Renderscript is to call it from your Android framework code by
+creating a Renderscript object by instantiating the (<code>ScriptC_<em>script_name</em></code>)
+class. This class contains a method, <code>forEach_root()</code>, that lets you invoke
+<code>rsForEach</code>. You give it the same parameters that you would if you were invoking it
+at the Renderscript runtime level. This technique allows your Android application to offload
+intensive mathematical calculations to Renderscript. See the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample to see
+how a simple Android application can utilize a compute Renderscript.</p>
+
+<p>To call a compute Renderscript at the Android framework level:</p>
+
+<ol>
+  <li>Allocate memory that is needed by the compute Renderscript in your Android framework code.
+  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
+  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
+  one or both {@link android.renderscript.Allocation}s.</li>
+
+  <li>Create an instance of the <code>ScriptC_<em>script_name</em></code> class.</li>
+
+  <li>Call <code>forEach_root()</code>, passing in the allocations, the
+  Renderscript, and any optional user-defined data. The output allocation will contain the output
+  of the compute Renderscript.</li>
+</ol>
+
+<p>In the following example, taken from the <a href=
+"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample, processes
+a bitmap and outputs a black and white version of it. The
+<code>createScript()</code> method carries out the steps described previously. This method the compute
+Renderscript, <code>mono.rs</code>, passing in memory allocations that store the bitmap to be processed
+as well as the eventual output bitmap. It then displays the processed bitmap onto the screen:</p>
+<pre>
+package com.example.android.rs.hellocompute;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.graphics.BitmapFactory;
+import android.graphics.Bitmap;
+import android.renderscript.RenderScript;
+import android.renderscript.Allocation;
+import android.widget.ImageView;
+
+public class HelloCompute extends Activity {
+  private Bitmap mBitmapIn;
+  private Bitmap mBitmapOut;
+
+  private RenderScript mRS;
+  private Allocation mInAllocation;
+  private Allocation mOutAllocation;
+  private ScriptC_mono mScript;
+
+  &#064;Override
+  protected void onCreate(Bundle savedInstanceState) {
+      super.onCreate(savedInstanceState);
+      setContentView(R.layout.main);
+
+      mBitmapIn = loadBitmap(R.drawable.data);
+      mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(),
+                                       mBitmapIn.getConfig());
+
+      ImageView in = (ImageView) findViewById(R.id.displayin);
+      in.setImageBitmap(mBitmapIn);
+
+      ImageView out = (ImageView) findViewById(R.id.displayout);
+      out.setImageBitmap(mBitmapOut);
+
+      createScript();
+  }
+  private void createScript() {
+      mRS = RenderScript.create(this);
+      mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
+          Allocation.MipmapControl.MIPMAP_NONE,
+          Allocation.USAGE_SCRIPT);
+      mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType());
+      mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
+      mScript.forEach_root(mInAllocation, mOutAllocation);
+      mOutAllocation.copyTo(mBitmapOut);
+  }
+
+  private Bitmap loadBitmap(int resource) {
+      final BitmapFactory.Options options = new BitmapFactory.Options();
+      options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+      return BitmapFactory.decodeResource(getResources(), resource, options);
+  }
+}
+</pre>
+
+<p>To call a compute Renderscript from another Renderscript file:</p>
+<ol>
+ <li>Allocate memory that is needed by the compute Renderscript in your Android framework code.
+  You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
+  13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
+  one or both {@link android.renderscript.Allocation}s.</li>
+
+  <li>Call <code>rsForEach()</code>, passing in the allocations and any optional user-defined data.
+  The output allocation will contain the output of the compute Renderscript.</li>
+</ol>
+<p>The following example, taken from the <a href=
+"{@docRoot}resources/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.html">Renderscript
+Balls sample</a>, demonstrates how to do make a script to script call:</p>
+<pre>
+rs_script script;
+rs_allocation in_allocation;
+rs_allocation out_allocation;
+UserData_t data;
+...
+rsForEach(script, in_allocation, out_allocation, &amp;data, sizeof(data));
+</pre>
+
+<p>In this example, assume that the script and memory allocations have already been
+allocated and bound at the Android framework level and that <code>UserData_t</code> is a struct
+declared previously. Passing a pointer to a struct and the size of the struct to <code>rsForEach</code>
+is optional, but useful if your compute Renderscript requires additional information other than
+the necessary memory allocations.</p>
diff --git a/docs/html/guide/topics/renderscript/graphics.jd b/docs/html/guide/topics/renderscript/graphics.jd
index 2fefecc..1c6d0de 100644
--- a/docs/html/guide/topics/renderscript/graphics.jd
+++ b/docs/html/guide/topics/renderscript/graphics.jd
@@ -1,6 +1,7 @@
-page.title=3D Graphics
-parent.title=RenderScript 
+page.title=Graphics
+parent.title=Renderscript
 parent.link=index.html
+
 @jd:body
 
   <div id="qv-wrapper">
@@ -11,16 +12,16 @@
         <li>
           <a href="#creating-graphics-rs">Creating a Graphics Renderscript</a>
           <ol>
-            <li><a href="#creating-native">Creating the native Renderscript file</a></li>
+            <li><a href="#creating-native">Creating the Renderscript file</a></li>
             <li><a href="#creating-entry">Creating the Renderscript entry point class</a></li>
-            <li><a href="#creating-view">Creating the surface view</a></li>
-            <li><a href="#creating-activity">Creating the activity</a></li>
+            <li><a href="#creating-view">Creating the view class</a></li>
+            <li><a href="#creating-activity">Creating the activity class</a></li>
           </ol>
         </li>
         <li>
           <a href="#drawing">Drawing</a>
           <ol>
-            <li><a href="#drawing-rsg">Drawing using the rsgDraw functions</a></li>
+            <li><a href="#drawing-rsg">Simple drawing</a></li>
             <li><a href="#drawing-mesh">Drawing with a mesh</a></li>
           </ol>
         </li>
@@ -31,6 +32,9 @@
             <li><a href="#shader-sampler">Defining a sampler</a></li>
           </ol>
         </li>
+        <li>
+          <a href="#fbo">Rendering to a Framebuffer Object</a>
+        </li>
       </ol>
 
       <h2>Related Samples</h2>
@@ -40,8 +44,9 @@
 
         <li><a href="{@docRoot}resources/samples/RenderScript/Fountain/index.html">Fountain</a></li>
 
-        <li><a href="{@docRoot}resources/samples/RenderScript/HelloWorld/index.html">Hello
-        World</a></li>
+        <li><a href="{@docRoot}resources/samples/RenderScript/FountainFbo/index.html">FountainFbo</a></li>        
+
+        <li><a href="{@docRoot}resources/samples/RenderScript/HelloWorld/index.html">Hello World</a></li>
 
         <li><a
 href="{@docRoot}resources/samples/RenderScript/MiscSamples/index.html">Misc Samples</a></li>
@@ -49,310 +54,476 @@
     </div>
   </div>
 
-  <p>RenderScript provides a number of graphics APIs for 3D rendering, both at the Android
-  framework level as well as at the native level. For instance, the Android framework APIs let you
+  <p>Renderscript provides a number of graphics APIs for rendering, both at the Android
+  framework level as well as at the Renderscript runtime level. For instance, the Android framework APIs let you
   create meshes and define shaders to customize the graphical rendering pipeline. The native
-  RenderScript graphics APIs lets you draw the actual meshes to render your scene. In general, you
-  will need to be familiar with APIs to appropriately render 3D graphics on an Android-powered
-  device.</p>
+  Renderscript graphics APIs let you draw the actual meshes to render your scene. You need to
+  be familiar with both APIs to appropriately render graphics on an Android-powered device.</p>
 
-  <h2 id="creating-graphics-rs">Creating a Graphics RenderScript</h2>
+  <h2 id="creating-graphics-rs">Creating a Graphics Renderscript</h2>
 
-  <p>Because of the various layers of code when writing a RenderScript application, it is useful to
-  create the following files for a scene that you want to render:</p>
+  <p>Renderscript applications require various layers of code, so it is useful to create the following
+  files to help keep your application organized:</p>
 
-  <ul>
-    <li>The native RenderScript <code>.rs</code> file. This file contains the logic to do the
-    graphics rendering.</li>
+  <dl>
+    <dt>The Renderscript <code>.rs</code> file</dt>
 
-    <li>The RenderScript entry point class that allows your view to interact with the code defined
-    in the <code>.rs</code> file. This class contains a RenderScript object(instance of
+    <dd>This file contains the logic to do the graphics rendering.</dd>
+
+    <dt>The Renderscript entry point <code>.java</code> class</dt>
+
+    <dd>This class allows the view class to interact with the code defined in the <code>.rs</code>
+    file. This class contains a Renderscript object (instance of
     <code>ScriptC_<em>renderscript_file</em></code>), which allows your Android framework code to
-    call the native RenderScript code. This class also creates the {@link
-    android.renderscript.RenderScriptGL} context object, which contains the current rendering state
-    of the RenderScript such as programs (vertex and fragment shaders, for example) that you want
-    to define and bind to the graphics pipeline. The context object attaches to the RenderScript
-    object (instance of <code><em>ScriptC_renderscript_file</em></code>) that does the rendering.
-    Our example names this class <code>HelloWorldRS</code>.</li>
+    call the Renderscript code. In general, this class does much of the setup for Renderscript
+    such as shader and mesh building and memory allocation and binding. The SDK samples follow the
+    convention of naming this file ActivityRS.java,
+    where Activity is the name of your main activity class.</dd>
 
-    <li>Create a class that extends {@link android.renderscript.RSSurfaceView} to provide a surface
-    to render on. If you want to implement callbacks from events inherited from {@link
+    <dt>The view <code>.java</code> class</dt>
+
+    <dd>This class extends {@link android.renderscript.RSSurfaceView} or {@link
+    android.renderscript.RSTextureView} to provide a surface to render on. A {@link
+    android.renderscript.RSSurfaceView} consumes a whole window, but a {@link
+    android.renderscript.RSTextureView} allows you to draw Renderscript graphics inside of a
+    view and add it to a {@link android.view.ViewGroup} alongside
+    other views. In this class, you create a {@link android.renderscript.RenderScriptGL} context object
+    with a call to {@link android.renderscript.RSSurfaceView#createRenderScriptGL
+    RSSurfaceView.createRenderscriptGL()} or {@link android.renderscript.RSTextureView#createRenderScriptGL
+    RSTextureView.createRenderscriptGL()}. The {@link android.renderscript.RenderScriptGL} context object
+    contains information about the current rendering state of Renderscript such as the vertex and
+    fragment shaders. You pass this context object to the Renderscript entry point class, so that
+    class can modify the rendering context if needed and bind the Renderscript code to the context. Once bound,
+    the view class can use the Renderscript code to display graphics.
+    The view class should also implement callbacks for events inherited from {@link
     android.view.View}, such as {@link android.view.View#onTouchEvent onTouchEvent()} and {@link
-    android.view.View#onKeyDown onKeyDown()}, do so in this class as well.</li>
+    android.view.View#onKeyDown onKeyDown()} if you want to detect these types of user interactions.
+    The SDK samples follow the convention of naming this file ActivityView.java,
+    where Activity is the name of your main activity class</dd>
 
-    <li>Create a class that is the main Activity class, like you would with any Android
-    application. This class sets your {@link android.renderscript.RSSurfaceView} as the content
-    view for this Activity.</li>
-  </ul>
+    <dt>The activity <code>.java</code> class</dt>
 
-  <p>The following sections describe how to implement these three classes by using the HelloWorld
-  RenderScript sample that is provided in the SDK as a guide (some code has been modified from its
-  original form for simplicity).</p>
+    <dd>This class is the main activity class and sets your {@link android.renderscript.RSSurfaceView} as the main content
+    view for this activity or uses the {@link android.renderscript.RSTextureView} alongside other views.</dd>
+  </dl>
+  <p>Figure 1 describes how these classes interact with one another in a graphics Renderscript:</p>
+  
+  <img src="{@docRoot}images/rs_graphics.png">
+  <p class="img-caption"><strong>Figure 1.</strong> Graphics Renderscript overview</p>
 
-  <h3 id="creating-native">Creating the native RenderScript file</h3>
 
-  <p>Your native RenderScript code resides in a <code>.rs</code> file in the
-  <code>&lt;project_root&gt;/src/</code> directory. You can also define <code>.rsh</code> header
-  files. This code contains the logic to render your graphics and declares all necessary variables
+  <p>The following sections describe how to create an application that uses a graphics Renderscript by using
+  the <a href="{@docRoot}resources/samples/RenderScript/Fountain/index.html">Renderscript Fountain
+  sample</a> that is provided in the SDK as a guide (some code has been modified from its original
+  form for simplicity).</p>
+
+  <h3 id="creating-native">Creating the Renderscript file</h3>
+
+  <p>Your Renderscript code resides in <code>.rs</code> and <code>.rsh</code> (headers) files in the
+  <code>&lt;project_root&gt;/src/</code> directory. This code contains the logic to render your
+  graphics and declares all other necessary items such as variables, structs,
   and pointers. Every graphics <code>.rs</code> file generally contains the following items:</p>
 
   <ul>
-    <li>A pragma (<code>#pragma rs java_package_name(<em>package.name</em>)</code>) that declares
-    the package name of the <code>.java</code> reflection of this RenderScript.</li>
+    <li>A pragma declaration (<code>#pragma rs java_package_name(<em>package.name</em>)</code>) that declares
+    the package name of the <code>.java</code> reflection of this Renderscript.</li>
 
-    <li>A pragma (<code>#pragma version(1)</code>) that declares the version of RenderScript that
+    <li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of Renderscript that
     you are using (1 is the only value for now).</li>
 
-    <li>A <code>#include</code> of the rs_graphics.rsh header file.</li>
+    <li>A <code>#include "rs_graphics.rsh"</code> declaration.</li>
 
-    <li>A <code>root()</code> function. This is the main worker function for your RenderScript and
-    calls RenderScript graphics APIs to draw meshes to the surface. This function is called every
-    time a frame refresh occurs, which is specified as its return value. A <code>0</code> specified
-    for the return value says to only render the frame when a property of the scene that you are
+    <li>A <code>root()</code> function. This is the main worker function for your Renderscript and
+    calls Renderscript graphics functions to render scenes. This function is called every time a
+    frame refresh occurs, which is specified as its return value. A <code>0</code> (zero) specified for
+    the return value says to only render the frame when a property of the scene that you are
     rendering changes. A non-zero positive integer specifies the refresh rate of the frame in
     milliseconds.
 
-      <p class="note"><strong>Note:</strong> The RenderScript runtime makes its best effort to
+      <p class="note"><strong>Note:</strong> The Renderscript runtime makes its best effort to
       refresh the frame at the specified rate. For example, if you are creating a live wallpaper
-      and set the return value to 50, the runtime renders the wallpaper at 20fps if it has just
-      enough or more resources to do so, and renders as fast as it can if it does not.</p>
-      
-      <p>For more
-      information on using the RenderScript graphics functions, see the <a href=
+      and set the return value to 20, the Renderscript runtime renders the wallpaper at 20fps if it has just
+      enough or more resources to do so. It renders as fast as it can if not enough resources
+      are available.</p>
+
+      <p>For more information on using the Renderscript graphics functions, see the <a href=
       "#drawing">Drawing</a> section.</p>
     </li>
 
-    <li>An <code>init()</code> function. This allows you to do any initialization of your
-    RenderScript before the <code>root()</code> function runs, such as initializing variables. This
-    function runs once and is called automatically when the RenderScript starts, before anything
-    else in your RenderScript. Creating this function is optional.</li>
+    <li>An <code>init()</code> function. This allows you to do initialization of your
+    Renderscript before the <code>root()</code> function runs, such as assigning values to variables. This
+    function runs once and is called automatically when the Renderscript starts, before anything
+    else in your Renderscript. Creating this function is optional.</li>
 
-    <li>Any variables, pointers, and structures that you wish to use in your RenderScript code (can
+    <li>Any variables, pointers, and structures that you wish to use in your Renderscript code (can
     be declared in <code>.rsh</code> files if desired)</li>
   </ul>
 
-  <p>The following code shows how the <code>helloworld.rs</code> file is implemented:</p>
+  <p>The following code shows how the <code>fountain.rs</code> file is implemented:</p>
   <pre>
 #pragma version(1)
 
 // Tell which java package name the reflected files should belong to
-#pragma rs java_package_name(com.android.rs.helloworld)
+#pragma rs java_package_name(com.example.android.rs.fountain)
 
-// Built-in header with graphics APIs
+//declare shader binding
+#pragma stateFragment(parent)
+
+// header with graphics APIs, must include explicitly
 #include "rs_graphics.rsh"
 
-// gTouchX and gTouchY are variables that are reflected for use
-// by the Android framework API. This RenderScript uses them to be notified of touch events.
-int gTouchX;
-int gTouchY;
+static int newPart = 0;
 
-// This is invoked automatically when the script is created and initializes the variables
-// in the Android framework layer as well.
-void init() {
-    gTouchX = 50.0f;
-    gTouchY = 50.0f;
+// the mesh to render
+rs_mesh partMesh;
+
+// the point representing where a particle is rendered
+typedef struct __attribute__((packed, aligned(4))) Point {
+    float2 delta;
+    float2 position;
+    uchar4 color;
+} Point_t;
+Point_t *point;
+
+// main worker function that renders particles onto the screen
+int root() {
+    float dt = min(rsGetDt(), 0.1f);
+    rsgClearColor(0.f, 0.f, 0.f, 1.f);
+    const float height = rsgGetHeight();
+    const int size = rsAllocationGetDimX(rsGetAllocation(point));
+    float dy2 = dt * (10.f);
+    Point_t * p = point;
+    for (int ct=0; ct &lt; size; ct++) {
+        p-&gt;delta.y += dy2;
+        p-&gt;position += p-&gt;delta;
+        if ((p-&gt;position.y &gt; height) &amp;&amp; (p-&gt;delta.y &gt; 0)) {
+            p-&gt;delta.y *= -0.3f;
+        }
+        p++;
+    }
+
+    rsgDrawMesh(partMesh);
+    return 1;
 }
 
-int root(int launchID) {
+// adds particles to the screen to render
+static float4 partColor[10];
+void addParticles(int rate, float x, float y, int index, bool newColor)
+{
+    if (newColor) {
+        partColor[index].x = rsRand(0.5f, 1.0f);
+        partColor[index].y = rsRand(1.0f);
+        partColor[index].z = rsRand(1.0f);
+    }
+    float rMax = ((float)rate) * 0.02f;
+    int size = rsAllocationGetDimX(rsGetAllocation(point));
+    uchar4 c = rsPackColorTo8888(partColor[index]);
 
-    // Clear the background color
-    rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-    // Tell the runtime what the font color should be
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    // Introuduce ourselves to the world by drawing a greeting
-    // at the position user touched on the screen
-    rsgDrawText("Hello World!", gTouchX, gTouchY);
-
-    // Return value tells RS roughly how often to redraw
-    // in this case 20 ms
-    return 20;
+    Point_t * np = &amp;point[newPart];
+    float2 p = {x, y};
+    while (rate--) {
+        float angle = rsRand(3.14f * 2.f);
+        float len = rsRand(rMax);
+        np-&gt;delta.x = len * sin(angle);
+        np-&gt;delta.y = len * cos(angle);
+        np-&gt;position = p;
+        np-&gt;color = c;
+        newPart++;
+        np++;
+        if (newPart &gt;= size) {
+            newPart = 0;
+            np = &amp;point[newPart];
+        }
+    }
 }
 </pre>
 
-  <h3 id="creating-entry">Creating the RenderScript entry point class</h3>
+  <h3 id="creating-entry">Creating the Renderscript entry point class</h3>
 
-  <p>When you create a RenderScript (<code>.rs</code>) file, it is helpful to create a
-  corresponding Android framework class that is an entry point into the <code>.rs</code> file. In
-  this entry point class, you create a RenderScript object by instantiating a
-  <code>ScriptC_<em>rs_filename</em></code> and binding it to the RenderScript context. The
-  RenderScript object is attached to the RenderScript bytecode, which is platform-independent and
-  gets compiled on the device when the RenderScript application runs. Both the
-  <code>ScriptC_<em>rs_filename</em></code> class and bytecode is generated by the Android build
-  tools and is packaged with the <code>.apk</code> file. The bytecode file is located in the
-  <code>&lt;project_root&gt;/res/raw/</code> directory and is named <code>rs_filename.bc</code>.
-  You refer to the bytecode as a resource (<code>R.raw.<em>rs_filename</em></code>). when creating
-  the RenderScript object..</p>
+  <p>When you create a Renderscript (<code>.rs</code>) file, it is helpful to create a
+  corresponding Android framework class that is an entry point into the <code>.rs</code> file.
+  The most important thing this class does is receive a {@link android.renderscript.RenderScriptGL} rendering context
+  object from the <a href="#creating-view">view class</a> and binds the actual Renderscript
+  code to the rendering context. This notifies your view class of the code that it needs
+  to render graphics.
+  </p>
 
-  <p>You then bind the RenderScript object to the RenderScript context, so that the surface view
-  knows what code to use to render graphics. The following code shows how the
-  <code>HelloWorldRS</code> class is implemented:</p>
+  <p>In addition, this class should contain all of the things needed to set up Renderscript.
+  Some important things that you need to do in this class are:</p>
+
+  <ul>
+    <li>Create a Renderscript object 
+  <code>ScriptC_<em>rs_filename</em></code>. The Renderscript object is attached to the Renderscript bytecode, which is platform-independent and
+  gets compiled on the device when the Renderscript application runs. The bytecode is referenced
+  as a raw resource and is passed into the constructor for the Renderscript object.
+  For example, this is how the <a href="{@docRoot}resources/samples/RenderScript/Fountain/index.html">Fountain</a>
+  sample creates the Renderscript object:
   <pre>
-package com.android.rs.helloworld;
+  RenderScriptGL rs;  //obtained from the view class
+  Resources res;      //obtained from the view class
+  ...
+  ScriptC_fountain mScript = new ScriptC_fountain(mRS, mRes, R.raw.fountain);
+  </pre>
+  </li>
+  <li>Allocate any necessary memory and bind it to your Renderscript code via the Renderscript object.</li>
+  <li>Build any necessary meshes and bind them to the Renderscript code via the Renderscript object.</li>
+  <li>Create any necessary programs and bind them to the Renderscript code via the Renderscript object.</li>
+  </ul>
+
+  <p>The following code shows how the <a href=
+  "{@docRoot}resources/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainRS.html">
+  FountainRS</a> class is implemented:</p>
+  <pre>
+package com.example.android.rs.fountain;
 
 import android.content.res.Resources;
 import android.renderscript.*;
+import android.util.Log;
 
-public class HelloWorldRS {
-    //context and resources are obtained from RSSurfaceView, which calls init()
+public class FountainRS {
+    public static final int PART_COUNT = 50000;
+
+    public FountainRS() {
+    }
+
+    /**
+     * This provides us with the Renderscript context and resources
+     * that allow us to create the Renderscript object
+     */
     private Resources mRes;
     private RenderScriptGL mRS;
 
-    //Declare the RenderScript object
-    private ScriptC_helloworld mScript;
+    // Renderscript object
+    private ScriptC_fountain mScript;
 
-    public HelloWorldRS() {
-    }
-
-    /**
-     * This provides us with the RenderScript context and resources
-     * that allow us to create the RenderScript object
-     */
+    // Called by the view class to initialize the Renderscript context and renderer
     public void init(RenderScriptGL rs, Resources res) {
         mRS = rs;
         mRes = res;
-        initRS();
-    }
-    /**
-     * Calls native RenderScript functions (set_gTouchX and set_gTouchY)
-     * through the reflected layer class ScriptC_helloworld to pass in
-     * touch point data.
-     */
-    public void onActionDown(int x, int y) {
-        mScript.set_gTouchX(x);
-        mScript.set_gTouchY(y);
-    }
-    /**
-     * Binds the RenderScript object to the RenderScript context
-     */
-    private void initRS() {
-        //create the RenderScript object
-        mScript = new ScriptC_helloworld(mRS, mRes, R.raw.helloworld);
-        //bind the RenderScript object to the RenderScript context
+
+        /**
+         * Create a shader and bind to the Renderscript context
+         */
+        ProgramFragmentFixedFunction.Builder pfb = new ProgramFragmentFixedFunction.Builder(rs);
+        pfb.setVaryingColor(true);
+        rs.bindProgramFragment(pfb.create());
+
+        /**
+         * Allocate memory for the particles to render and create the mesh to draw
+         */
+        ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT);
+        Mesh.AllocationBuilder smb = new Mesh.AllocationBuilder(mRS);
+        smb.addVertexAllocation(points.getAllocation());
+        smb.addIndexSetType(Mesh.Primitive.POINT);
+        Mesh sm = smb.create();
+
+       /**
+        * Create and bind the Renderscript object to the Renderscript context
+        */
+        mScript = new ScriptC_fountain(mRS, mRes, R.raw.fountain);
+        mScript.set_partMesh(sm);
+        mScript.bind_point(points);
         mRS.bindRootScript(mScript);
     }
-}
 
+    boolean holdingColor[] = new boolean[10];
+
+    /**
+     * Calls Renderscript functions (invoke_addParticles)
+     * via the Renderscript object to add particles to render
+     * based on where a user touches the screen.
+     */
+    public void newTouchPosition(float x, float y, float pressure, int id) {
+        if (id &gt;= holdingColor.length) {
+            return;
+        }
+        int rate = (int)(pressure * pressure * 500.f);
+        if (rate &gt; 500) {
+            rate = 500;
+        }
+        if (rate &gt; 0) {
+            mScript.invoke_addParticles(rate, x, y, id, !holdingColor[id]);
+            holdingColor[id] = true;
+        } else {
+            holdingColor[id] = false;
+        }
+
+    }
+}
 </pre>
 
-  <h3 id="creating-view">Creating the surface view</h3>
 
-  <p>To create a surface view to render graphics on, create a class that extends {@link
-  android.renderscript.RSSurfaceView}. This class also creates a RenderScript context object
-  ({@link android.renderscript.RenderScriptGL} and passes it to the Rendscript entry point class to
-  bind the two. The following code shows how the <code>HelloWorldView</code> class is
-  implemented:</p>
+  <h3 id="creating-view">Creating the view class</h3>
+
+
+  <p>To display graphics, you need a view to render on. Create a class that extends {@link
+  android.renderscript.RSSurfaceView} or {@link android.renderscript.RSTextureView}. This class
+  allows you to create a {@link android.renderscript.RenderScriptGL} context object by calling and
+  pass it to the Rendscript entry point class to bind the two. Once bound, the content is aware
+  of the code that it needs to use to render graphics with. If your Renderscript code
+  depends on any type of information that the view is aware of, such as touches from the user,
+  you can also use this class to relay that information to the Renderscript entry point class.
+  The following code shows how the <code>FountainView</code> class is implemented:</p>
   <pre>
-package com.android.rs.helloworld;
+package com.example.android.rs.fountain;
 
-import android.renderscript.RSSurfaceView;
+import android.renderscript.RSTextureView;
 import android.renderscript.RenderScriptGL;
 import android.content.Context;
 import android.view.MotionEvent;
 
-public class HelloWorldView extends RSSurfaceView {
-    // RenderScript context
-    private RenderScriptGL mRS;
-    // RenderScript entry point object that does the rendering
-    private HelloWorldRS mRender;
+public class FountainView extends RSTextureView {
 
-    public HelloWorldView(Context context) {
+    public FountainView(Context context) {
         super(context);
-        initRS();
     }
+    // Renderscript context
+    private RenderScriptGL mRS;
+    // Renderscript entry point object that calls Renderscript code
+    private FountainRS mRender;
 
-    private void initRS() {
+    /**
+     * Create Renderscript context and initialize Renderscript entry point
+     */
+    &#064;Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        android.util.Log.e("rs", "onAttachedToWindow");
         if (mRS == null) {
-            // Initialize RenderScript with default surface characteristics.
             RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            //Create the RenderScript context
             mRS = createRenderScriptGL(sc);
-            // Create an instance of the RenderScript entry point class
-            mRender = new HelloWorldRS();
-            // Call the entry point class to bind it to this context
+            mRender = new FountainRS();
             mRender.init(mRS, getResources());
         }
     }
 
-    /**
-     * Rebind everything when the window becomes attached
-     */
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        initRS();
-    }
-
-    /**
-     * Stop rendering when window becomes detached
-     */
+    &#064;Override
     protected void onDetachedFromWindow() {
-        // Handle the system event and clean up
-        mRender = null;
+        super.onDetachedFromWindow();
+        android.util.Log.e("rs", "onDetachedFromWindow");
         if (mRS != null) {
             mRS = null;
             destroyRenderScriptGL();
         }
     }
 
-    /**
-     * Use callbacks to relay data to RenderScript entry point class
-     */
-    public boolean onTouchEvent(MotionEvent ev) {
-        // Pass touch events from the system to the rendering script
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            mRender.onActionDown((int)ev.getX(), (int)ev.getY());
-            return true;
-        }
 
-        return false;
+    /**
+     * Use callbacks to relay data to Renderscript entry point class
+     */
+    &#064;Override
+    public boolean onTouchEvent(MotionEvent ev)
+    {
+        int act = ev.getActionMasked();
+        if (act == ev.ACTION_UP) {
+            mRender.newTouchPosition(0, 0, 0, ev.getPointerId(0));
+            return false;
+        } else if (act == MotionEvent.ACTION_POINTER_UP) {
+            // only one pointer going up, we can get the index like this
+            int pointerIndex = ev.getActionIndex();
+            int pointerId = ev.getPointerId(pointerIndex);
+            mRender.newTouchPosition(0, 0, 0, pointerId);
+        }
+        int count = ev.getHistorySize();
+        int pcount = ev.getPointerCount();
+
+        for (int p=0; p &lt; pcount; p++) {
+            int id = ev.getPointerId(p);
+            mRender.newTouchPosition(ev.getX(p),
+                                     ev.getY(p),
+                                     ev.getPressure(p),
+                                     id);
+
+            for (int i=0; i &lt; count; i++) {
+                mRender.newTouchPosition(ev.getHistoricalX(p, i),
+                                         ev.getHistoricalY(p, i),
+                                         ev.getHistoricalPressure(p, i),
+                                         id);
+            }
+        }
+        return true;
     }
 }
-
 </pre>
 
-  <h3 id="creating-activity">Creating the Activity</h3>
+  <h3 id="creating-activity">Creating the activity class</h3>
 
-  <p>Applications that use RenderScript still adhere to activity lifecyle, and are part of the same
-  view hierarchy as traditional Android applications, which is handled by the Android VM. This
-  Activity class sets its view to be the {@link android.renderscript.RSSurfaceView} and handles
-  lifecycle callback events appropriately. The following code shows how the <code>HelloWorld</code>
-  class is implemented:</p>
+  <p>Applications that use Renderscript still behave like normal Android applications, so you
+   need an activity class that handles activity lifecycle callback events appropriately. The activity class
+   also sets your {@link android.renderscript.RSSurfaceView} view class to be the main content view of the
+   activity or uses your {@link android.renderscript.RSTextureView}
+  in a {@link android.view.ViewGroup} alongside other views.</p>
+
+  <p>The following code shows how the <a href="{@docRoot}resources/samples/RenderScript/Fountain/index.html">Fountain</a>
+  sample declares its activity class:</p>
   <pre>
-public class HelloWorldActivity extends Activity {
+package com.example.android.rs.fountain;
 
-    //Custom view to use with RenderScript
-    private HelloWorldView view;
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
 
+public class Fountain extends Activity {
+
+    private static final String LOG_TAG = "libRS_jni";
+    private static final boolean DEBUG  = false;
+    private static final boolean LOG_ENABLED = false;
+
+    private FountainView mView;
+
+    &#064;Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        // Create surface view and set it as the content of our Activity
-        mView = new HelloWorldView(this);
-        setContentView(view);
+
+        // Create our Preview view and set it as 
+        // the content of our activity
+        mView = new FountainView(this);
+        setContentView(mView);
     }
 
+    &#064;Override
     protected void onResume() {
-        // Ideally an app should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
+        Log.e("rs", "onResume");
+
+        // Ideally a game should implement onResume() and onPause()
+        // to take appropriate action when the activity looses focus
         super.onResume();
-        view.resume();
+        mView.resume();
     }
 
+    &#064;Override
     protected void onPause() {
-        // Ideally an app should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
+        Log.e("rs", "onPause");
+
+        // Ideally a game should implement onResume() and onPause()
+        // to take appropriate action when the activity looses focus
         super.onPause();
-        view.pause();
+        mView.pause();
+
+    }
+
+    static void log(String message) {
+        if (LOG_ENABLED) {
+            Log.v(LOG_TAG, message);
+        }
     }
 }
 </pre>
 
+<p>Now that you have an idea of what is involved in a Renderscript graphics application, you can
+start building your own. It might be easiest to begin with one of the
+<a href="{@docRoot}resources/samples/RenderScript/index.html">Renderscript samples</a> as a starting
+point if this is your first time using Renderscript.</p>
+
   <h2 id="drawing">Drawing</h2>
   <p>The following sections describe how to use the graphics functions to draw with Renderscript.</p>
-  <h3 id="drawing-rsg">Drawing using the rsgDraw functions</h3>
 
-  <p>The native RenderScript APIs provide a few convenient functions to easily draw a polygon to
-  the screen. You call these in your <code>root()</code> function to have them render to the
-  surface view. These functions are available for simple drawing and should not be used for complex
-  graphics rendering:</p>
+  <h3 id="drawing-rsg">Simple drawing</h3>
+
+  <p>The native Renderscript APIs provide a few convenient functions to easily draw a polygon or text to
+  the screen. You call these in your <code>root()</code> function to have them render to the {@link
+  android.renderscript.RSSurfaceView} or {@link android.renderscript.RSTextureView}. These functions are
+  available for simple drawing and should not be used for complex graphics rendering:</p>
 
   <ul>
     <li><code>rsgDrawRect()</code>: Sets up a mesh and draws a rectangle to the screen. It uses the
@@ -360,31 +531,32 @@
 
     <li><code>rsgDrawQuad()</code>: Sets up a mesh and draws a quadrilateral to the screen.</li>
 
-    <li><code>rsgDrawQuadTexCoords()</code>: Sets up a mesh and draws a textured quadrilateral to
-    the screen.</li>
+    <li><code>rsgDrawQuadTexCoords()</code>: Sets up a mesh and draws a quadrilateral to the screen
+    using the provided coordinates of a texture.</li>
+
+    <li><code>rsgDrawText()</code>: Draws specified text to the screen. Use <code>rsgFontColor()</code>
+    to set the color of the text.</li>
   </ul>
 
   <h3 id="drawing-mesh">Drawing with a mesh</h3>
 
-  <p>When you want to draw complex shapes and textures to the screen, instantiate a {@link
-  android.renderscript.Mesh} and draw it to the screen with <code>rsgDrawMesh()</code>. A {@link
+  <p>When you want to render complex scenes to the screen, instantiate a {@link
+  android.renderscript.Mesh} and draw it with <code>rsgDrawMesh()</code>. A {@link
   android.renderscript.Mesh} is a collection of allocations that represent vertex data (positions,
-  normals, texture coordinates) and index data such as triangles and lines. You can build a Mesh in
-  three different ways:</p>
+  normals, texture coordinates) and index data that provides information on how to draw triangles
+  and lines with the provided vertex data. You can build a Mesh in three different ways:</p>
 
   <ul>
     <li>Build the mesh with the {@link android.renderscript.Mesh.TriangleMeshBuilder} class, which
-    allows you to specify a set of vertices and indices for each triangle that you want to draw.
-    The downside of doing it this way is there is no way to specify the vertices in your native
-    RenderScript code.</li>
+    allows you to specify a set of vertices and indices for each triangle that you want to draw.</li>
 
     <li>Build the mesh using an {@link android.renderscript.Allocation} or a set of {@link
     android.renderscript.Allocation}s with the {@link android.renderscript.Mesh.AllocationBuilder}
-    class. This allows you to build a mesh with vertices already stored in memory, which allows you
-    to set the vertices in native or Android code.</li>
+    class. This approach allows you to build a mesh with vertices already stored in memory, which allows you
+    to specify the vertices in Renderscript or Android framework code.</li>
 
-    <li>Build the mesh with the {@link android.renderscript.Mesh.Builder} class. This is a
-    convenience method for when you know what data types you want to use to build your mesh, but
+    <li>Build the mesh with the {@link android.renderscript.Mesh.Builder} class. You should use
+    this convenience method when you know the data types you want to use to build your mesh, but
     don't want to make separate memory allocations like with {@link
     android.renderscript.Mesh.AllocationBuilder}. You can specify the types that you want and this
     mesh builder automatically creates the memory allocations for you.</li>
@@ -421,7 +593,7 @@
 script.set_mesh(smP);
 </pre>
 
-  <p>In your native RenderScript code, draw the built mesh to the screen:</p>
+  <p>In your Renderscript code, draw the built mesh to the screen:</p>
   <pre>
 rs_mesh mesh;
 ...
@@ -435,18 +607,18 @@
 }
 </pre>
 
-  <h2 id="shaders">Shaders</h2>
+  <h2 id="shader">Programs</h2>
 
   <p>You can attach four program objects to the {@link android.renderscript.RenderScriptGL} context
   to customize the rendering pipeline. For example, you can create vertex and fragment shaders in
-  GLSL or build a raster program object with provided methods without writing GLSL code. The four
-  program objects mirror a traditional graphical rendering pipeline:</p>
+  GLSL or build a raster program object that controls culling. The four programs mirror a
+  traditional graphical rendering pipeline:</p>
 
   <table>
     <tr>
       <th>Android Object Type</th>
 
-      <th>RenderScript Native Type</th>
+      <th>Renderscript Native Type</th>
 
       <th>Description</th>
     </tr>
@@ -457,17 +629,17 @@
       <td>rs_program_vertex</td>
 
       <td>
-        <p>The RenderScript vertex program, also known as a vertex shader, describes the stage in
+        <p>The Renderscript vertex program, also known as a vertex shader, describes the stage in
         the graphics pipeline responsible for manipulating geometric data in a user-defined way.
-        The object is constructed by providing RenderScript with the following data:</p>
+        The object is constructed by providing Renderscript with the following data:</p>
 
         <ul>
-          <li>An Element describing its varying inputs or attributes</li>
+          <li>An {@link android.renderscript.Element} describing its varying inputs or attributes</li>
 
           <li>GLSL shader string that defines the body of the program</li>
 
-          <li>a Type that describes the layout of an Allocation containing constant or uniform
-          inputs</li>
+          <li>a {@link android.renderscript.Type} that describes the layout of an
+          Allocation containing constant or uniform inputs</li>
         </ul>
 
         <p>Once the program is created, bind it to the {@link android.renderscript.RenderScriptGL}
@@ -475,22 +647,29 @@
         bindProgramVertex()}. It is then used for all subsequent draw calls until you bind a new
         program. If the program has constant inputs, the user needs to bind an allocation
         containing those inputs. The allocation's type must match the one provided during creation.
-        The RenderScript library then does all the necessary plumbing to send those constants to
-        the graphics hardware. Varying inputs to the shader, such as position, normal, and texture
-        coordinates are matched by name between the input Element and the Mesh object being drawn.
-        The signatures don't have to be exact or in any strict order. As long as the input name in
-        the shader matches a channel name and size available on the mesh, the run-time would take
-        care of connecting the two. Unlike OpenGL, there is no need to link the vertex and fragment
-        programs.</p>
+        </p>
 
-        <p>To bind shader constructs to the Program, declare a struct containing the necessary
-        shader constants in your native RenderScript code. This struct is generated into a
-        reflected class that you can use as a constant input element during the Program's creation.
-        It is an easy way to create an instance of this struct as an allocation. You would then
-        bind this Allocation to the Program and the RenderScript system sends the data that is
-        contained in the struct to the hardware when necessary. To update shader constants, you
-        change the values in the Allocation and notify the native RenderScript code of the
-        change.</p>
+        <p>The Renderscript runtime then does all the necessary plumbing to send those constants to
+        the graphics hardware. Varying inputs to the shader, such as position, normal, and texture
+        coordinates are matched by name between the input {@link android.renderscript.Element}
+        and the mesh object that is being drawn. The signatures don't have to be exact or in any
+        strict order. As long as the input name in the shader matches a channel name and size
+        available on the mesh, the Renderscript runtime handles connecting the two. Unlike OpenGL
+        there is no need to link the vertex and fragment programs.</p>
+
+        <p>To bind shader constants to the program, declare a <code>struct</code> that contains the necessary
+        shader constants in your Renderscript code. This <code>struct</code> is generated into a
+        reflected class that you can use as a constant input element during the program's creation.
+        It is an easy way to create an instance of this <code>struct</code> as an allocation. You would then
+        bind this {@link android.renderscript.Allocation} to the program and the
+        Renderscript runtime sends the data that is contained in the <code>struct</code> to the hardware
+        when necessary. To update shader constants, you change the values in the
+        {@link android.renderscript.Allocation} and notify the Renderscript
+        code of the change.</p>
+
+        <p>The {@link android.renderscript.ProgramVertexFixedFunction.Builder} class also
+        lets you build a simple vertex shader without writing GLSL code.
+        </p>
       </td>
     </tr>
 
@@ -500,26 +679,33 @@
       <td>rs_program_fragment</td>
 
       <td>
-        <p>The RenderScript fragment program, also known as the fragment shader, is responsible for
+        <p>The Renderscript fragment program, also known as a fragment shader, is responsible for
         manipulating pixel data in a user-defined way. It's constructed from a GLSL shader string
-        containing the program body, textures inputs, and a Type object describing the constants
-        used by the program. Like the vertex programs, when an allocation with constant input
+        containing the program body, texture inputs, and a {@link android.renderscript.Type}
+        object that describes the constants
+        used by the program. Like the vertex programs, when an {@link android.renderscript.Allocation}
+        with constant input
         values is bound to the shader, its values are sent to the graphics program automatically.
-        Note that the values inside the allocation are not explicitly tracked. If they change
-        between two draw calls using the same program object, notify the runtime of that change by
-        calling rsgAllocationSyncAll so it could send the new values to hardware. Communication
+        Note that the values inside the {@link android.renderscript.Allocation} are not explicitly tracked.
+        If they change between two draw calls using the same program object, notify the runtime of that change by
+        calling <code>rsgAllocationSyncAll()</code>, so it can send the new values to hardware. Communication
         between the vertex and fragment programs is handled internally in the GLSL code. For
-        example, if the fragment program is expecting a varying input called varTex0, the GLSL code
+        example, if the fragment program is expecting a varying input called <code>varTex0</code>, the GLSL code
         inside the program vertex must provide it.</p>
 
-        <p>To bind shader constants to this program, declare a struct containing the necessary
-        shader constants in your native RenderScript code. This struct is generated into a
-        reflected class that you can use as a constant input element during the Program's creation.
-        It is an easy way to create an instance of this struct as an allocation. You would then
-        bind this Allocation to the Program and the RenderScript system sends the data that is
-        contained in the struct to the hardware when necessary. To update shader constants, you
-        change the values in the Allocation and notify the native RenderScript code of the
-        change.</p>
+        <p>To bind shader constructs to the program, declare a <code>struct</code> that contains the necessary
+        shader constants in your Renderscript code. This <code>struct</code> is generated into a
+        reflected class that you can use as a constant input element during the program's creation.
+        It is an easy way to create an instance of this <code>struct</code> as an allocation. You would then
+        bind this {@link android.renderscript.Allocation} to the program and the
+        Renderscript runtime sends the data that is contained in the <code>struct</code> to the hardware
+        when necessary. To update shader constants, you change the values in the
+        {@link android.renderscript.Allocation} and notify the Renderscript
+        code of the change.</p>
+
+        <p>The {@link android.renderscript.ProgramFragmentFixedFunction.Builder} class also
+        lets you build a simple fragment shader without writing GLSL code.
+        </p>
       </td>
     </tr>
 
@@ -528,7 +714,7 @@
 
       <td>rs_program_store</td>
 
-      <td>The RenderScript ProgramStore contains a set of parameters that control how the graphics
+      <td>The Renderscript store program contains a set of parameters that control how the graphics
       hardware writes to the framebuffer. It could be used to enable and disable depth writes and
       testing, setup various blending modes for effects like transparency and define write masks
       for color components.</td>
@@ -539,12 +725,12 @@
 
       <td>rs_program_raster</td>
 
-      <td>Program raster is primarily used to specify whether point sprites are enabled and to
+      <td>The Renderscript raster program is primarily used to specify whether point sprites are enabled and to
       control the culling mode. By default back faces are culled.</td>
     </tr>
   </table>
 
-  <p>The following example defines a vertex shader in GLSL and binds it to the RenderScript:</p>
+  <p>The following example defines a vertex shader in GLSL and binds it to a Renderscript context object:</p>
   <pre>
     private RenderScriptGL glRenderer;      //rendering context
     private ScriptField_Point mPoints;      //vertices
@@ -567,49 +753,37 @@
         ProgramVertex pvs = sb.create();
         pvs.bindConstants(mVpConsts.getAllocation(), 0);
         glRenderer.bindProgramVertex(pvs);
-
-
 </pre>
 
+
   <p>The <a href=
   "{@docRoot}resources/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.html">
   RsRenderStatesRS</a> sample has many examples on how to create a shader without writing GLSL.</p>
 
-  <h3 id="shader-bindings">Shader bindings</h3>
+  <h3 id="shader-bindings">Program bindings</h3>
 
-  <p>You can also set four pragmas that control the shaders' default bindings to the {@link
+  <p>You can also declare four pragmas that control default program bindings to the {@link
   android.renderscript.RenderScriptGL} context when the script is executing:</p>
 
   <ul>
-    <li>stateVertex</li>
+    <li><code>stateVertex</code></li>
 
-    <li>stateFragment</li>
+    <li><code>stateFragment</code></li>
 
-    <li>stateRaster</li>
+    <li><code>stateRaster</code></li>
 
-    <li>stateStore</li>
+    <li><code>stateStore</code></li>
   </ul>
 
   <p>The possible values for each pragma are <code>parent</code> or <code>default</code>. Using
-  <code>default</code> binds the shaders to the graphical context with the system defaults. The
-  default shader is defined below:</p>
-  <pre>
-("varying vec4 varColor;\n");
-("varying vec2 varTex0;\n");
-("void main() {\n");
-(" gl_Position = UNI_MVP * ATTRIB_position;\n");
-(" gl_PointSize = 1.0;\n");
-(" varColor = ATTRIB_color;\n");
-(" varTex0 = ATTRIB_texture0;\n");
-("}\n");
-</pre>
+  <code>default</code> binds the shaders to the graphical context with the system defaults.</p>
 
   <p>Using <code>parent</code> binds the shaders in the same manner as it is bound in the calling
   script. If this is the root script, the parent state is taken from the bind points that are set
   by the {@link android.renderscript.RenderScriptGL} bind methods.</p>
 
-  <p>For example, you can define this at the top of your native graphics RenderScript code to have
-  the Vertex and Store shaders inherent the bind properties from their parent scripts:</p>
+  <p>For example, you can define this at the top of your graphics Renderscript code to have
+  the vertex and store programs inherent the bind properties from their parent scripts:</p>
   <pre>
 #pragma stateVertex(parent)
 #pragma stateStore(parent)
@@ -618,18 +792,202 @@
   <h3 id="shader-sampler">Defining a sampler</h3>
 
   <p>A {@link android.renderscript.Sampler} object defines how data is extracted from textures.
-  Samplers are bound to Program objects (currently only a Fragment Program) alongside the texture
-  whose sampling they control. These objects are used to specify such things as edge clamping
-  behavior, whether mip-maps are used, and the amount of anisotropy required. There might be
-  situations where hardware does not support the desired behavior of the sampler. In these cases,
-  the runtime attempts to provide the closest possible approximation. For example, the user
-  requested 16x anisotropy, but only 8x was set because it's the best available on the
-  hardware.</p>
+  Samplers are bound to a {@link android.renderscript.ProgramFragment} alongside the texture
+  whose sampling they control. These
+  objects are used to specify such things as edge clamping behavior, whether mip-maps are used, and
+  the amount of anisotropy required. There might be situations where hardware does not support the
+  desired behavior of the sampler. In these cases, the Renderscript runtime attempts to provide the
+  closest possible approximation. For example, the user requested 16x anisotropy, but only 8x was
+  set because it's the best available on the hardware.</p>
 
   <p>The <a href=
   "{@docRoot}resources/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.html">
   RsRenderStatesRS</a> sample has many examples on how to create a sampler and bind it to a
   Fragment program.</p>
-  
-</body>
-</html>
+
+
+
+<h2 id="fbo">Rendering to a Framebuffer Object</h2>
+
+<p>Framebuffer objects allow you to render offscreen instead of in the default onscreen
+framebuffer. This approach might be useful for situations where you need to post-process a texture before
+rendering it to the screen, or when you want to composite two scenes in one such as rendering a rear-view
+mirror of a car. There are two buffers associated with a framebuffer object: a color buffer
+and a depth buffer. The color buffer (required) contains the actual pixel data of the scene
+that you are rendering, and the depth buffer (optional) contains the values necessary to figure
+out what vertices are drawn depending on their z-values.</p>
+
+<p>In general, you need to do the following to render to a framebuffer object:</p>
+
+<ul>
+  <li>Create {@link android.renderscript.Allocation} objects for the color buffer and
+  depth buffer (if needed). Specify the {@link
+  android.renderscript.Allocation#USAGE_GRAPHICS_RENDER_TARGET} usage attribute for these
+  allocations to notify the Renderscript runtime to use these allocations for the framebuffer
+  object. For the color buffer allocation, you most likely need to declare the {@link
+  android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} usage attribute
+  to use the color buffer as a texture, which is the most common use of the framebuffer object.</li>
+
+  <li>Tell the Renderscript runtime to render to the framebuffer object instead of the default
+  framebuffer by calling <code>rsgBindColorTarget()</code> and passing it the color buffer
+  allocation. If applicable, call <code>rsgBindDepthTarget()</code> passing in the depth buffer
+  allocation as well.</li>
+
+  <li>Render your scene normally with the <code>rsgDraw</code> functions. The scene will be
+  rendered into the color buffer instead of the default onscreen framebuffer.</li>
+
+  <li>When done, tell the Renderscript runtime stop rendering to the color buffer and back
+  to the default framebuffer by calling <code>rsgClearAllRenderTargets()</code>.</li>
+
+  <li>Create a fragment shader and bind a the color buffer to it as a texture.</li>
+
+  <li>Render your scene to the default framebuffer. The texture will be used according
+  to the way you setup your fragment shader.</li>
+</ul>
+
+<p>The following example shows you how to render to a framebuffer object by modifying the
+<a href="{@docRoot}guide/resources/renderscript/Fountain/">Fountain</a> Renderscript sample. The end
+result is the <a href="{@docRoot}guide/resources/renderscript/FountainFBO/">FountainFBO</a> sample.
+The modifications render the exact same scene into a framebuffer object as it does the default
+framebuffer. The framebuffer object is then rendered into the default framebuffer in a small
+area at the top left corner of the screen.</p>
+
+<ol>
+  <li>Modify <code>fountain.rs</code> and add the following global variables. This creates setter
+  methods when this file is reflected into a <code>.java</code> file, allowing you to allocate
+  memory in your Android framework code and binding it to the Renderscript runtime.
+<pre>
+//allocation for color buffer
+rs_allocation gColorBuffer;
+//fragment shader for rendering without a texture (used for rendering to framebuffer object)
+rs_program_fragment gProgramFragment;
+//fragment shader for rendering with a texture (used for rendering to default framebuffer)
+rs_program_fragment gTextureProgramFragment;
+</pre>
+  </li>
+
+  <li>Modify the root function of <code>fountain.rs</code> to look like the following code. The
+  modifications are commented:
+<pre>
+int root() {
+    float dt = min(rsGetDt(), 0.1f);
+    rsgClearColor(0.f, 0.f, 0.f, 1.f);
+    const float height = rsgGetHeight();
+    const int size = rsAllocationGetDimX(rsGetAllocation(point));
+    float dy2 = dt * (10.f);
+    Point_t * p = point;
+    for (int ct=0; ct < size; ct++) {
+        p->delta.y += dy2;
+        p->position += p->delta;
+        if ((p->position.y > height) && (p->delta.y > 0)) {
+            p->delta.y *= -0.3f;
+        }
+        p++;
+    }
+    //Tell Renderscript runtime to render to the frame buffer object
+    rsgBindColorTarget(gColorBuffer, 0);
+    //Begin rendering on a white background
+    rsgClearColor(1.f, 1.f, 1.f, 1.f);
+    rsgDrawMesh(partMesh);
+
+    //When done, tell Renderscript runtime to stop rendering to framebuffer object
+    rsgClearAllRenderTargets();
+
+    //Bind a new fragment shader that declares the framebuffer object to be used as a texture
+    rsgBindProgramFragment(gTextureProgramFragment);
+
+    //Bind the framebuffer object to the fragment shader at slot 0 as a texture
+    rsgBindTexture(gTextureProgramFragment, 0, gColorBuffer);
+    //Draw a quad using the framebuffer object as the texture
+    float startX = 10, startY = 10;
+    float s = 256;
+    rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
+                         startX, startY + s, 0, 0, 0,
+                         startX + s, startY + s, 0, 1, 0,
+                         startX + s, startY, 0, 1, 1);
+
+    //Rebind the original fragment shader to render as normal
+    rsgBindProgramFragment(gProgramFragment);
+
+    //Render the main scene
+    rsgDrawMesh(partMesh);
+
+    return 1;
+}
+</pre>
+  </li>
+
+  <li>In the <code>FountainRS.java</code> file, modify the <code>init()</code> method to look
+  like the following code. The modifications are commented:
+
+<pre>
+/* Add necessary members */
+private ScriptC_fountainfbo mScript;
+private Allocation mColorBuffer;
+private ProgramFragment mProgramFragment;
+private ProgramFragment mTextureProgramFragment;
+
+public void init(RenderScriptGL rs, Resources res) {
+    mRS = rs;
+    mRes = res;
+
+    ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT);
+
+    Mesh.AllocationBuilder smb = new Mesh.AllocationBuilder(mRS);
+    smb.addVertexAllocation(points.getAllocation());
+    smb.addIndexSetType(Mesh.Primitive.POINT);
+    Mesh sm = smb.create();
+
+    mScript = new ScriptC_fountainfbo(mRS, mRes, R.raw.fountainfbo);
+    mScript.set_partMesh(sm);
+    mScript.bind_point(points);
+
+    ProgramFragmentFixedFunction.Builder pfb = new ProgramFragmentFixedFunction.Builder(rs);
+    pfb.setVaryingColor(true);
+    mProgramFragment = pfb.create();
+    mScript.set_gProgramFragment(mProgramFragment);
+
+    /* Second fragment shader to use a texture (framebuffer object) to draw with */
+    pfb.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
+        ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
+
+    /* Set the fragment shader in the Renderscript runtime */
+    mTextureProgramFragment = pfb.create();
+    mScript.set_gTextureProgramFragment(mTextureProgramFragment);
+
+    /* Create the allocation for the color buffer */
+    Type.Builder colorBuilder = new Type.Builder(mRS, Element.RGBA_8888(mRS));
+    colorBuilder.setX(256).setY(256);
+    mColorBuffer = Allocation.createTyped(mRS, colorBuilder.create(),
+    Allocation.USAGE_GRAPHICS_TEXTURE |
+    Allocation.USAGE_GRAPHICS_RENDER_TARGET);
+
+    /* Set the allocation in the Renderscript runtime */
+    mScript.set_gColorBuffer(mColorBuffer);
+
+    mRS.bindRootScript(mScript);
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> This sample doesn't use a depth buffer, but the following code
+shows you how to declare an example depth buffer if you need to use
+one for your application. The depth buffer must have the same dimensions as the color buffer:
+
+<pre>
+Allocation mDepthBuffer;
+
+...
+
+Type.Builder b = new Type.Builder(mRS, Element.createPixel(mRS, DataType.UNSIGNED_16,
+    DataKind.PIXEL_DEPTH));
+b.setX(256).setY(256);
+mDepthBuffer = Allocation.createTyped(mRS, b.create(),
+Allocation.USAGE_GRAPHICS_RENDER_TARGET);
+
+</pre>
+</p>
+</li>
+
+  <li>Run and use the sample. The smaller, white quad on the top-left corner is using the
+  framebuffer object as a texture, which renders the same scene as the main rendering.</li>
+</ol>
diff --git a/docs/html/guide/topics/renderscript/index.jd b/docs/html/guide/topics/renderscript/index.jd
index 63f341a..a0e8876 100644
--- a/docs/html/guide/topics/renderscript/index.jd
+++ b/docs/html/guide/topics/renderscript/index.jd
@@ -1,4 +1,4 @@
-page.title=RenderScript
+page.title=Renderscript
 @jd:body
 
   <div id="qv-wrapper">
@@ -6,14 +6,14 @@
       <h2>In this document</h2>
 
       <ol>
-        <li><a href="#overview">RenderScript System Overview</a></li>
-        <li>
+        <li><a href="#overview">Renderscript Overview</a></li>
+        <li><a href="#native">Renderscript Runtime Layer</a></li>
+        <li><a href="#reflected">Reflected Layer</a>
           <ol>
-            <li><a href="#native">Native RenderScript layer</a></li>
-
-            <li><a href="#reflected">Reflected layer</a></li>
-
-            <li><a href="#framework">Android framework layer</a></li>
+            <li><a href="#func">Functions</a></li>
+            <li><a href="#var">Variables</a></li>
+            <li><a href="#pointer">Pointers</a></li>
+            <li><a href="#struct">Structs</a></li>
           </ol>
         </li>
 
@@ -21,540 +21,329 @@
           <a href="#mem-allocation">Memory Allocation APIs</a>
         </li>
         <li>
-          <a href="#dynamic">Dynamic Memory Allocations</a>
+          <a href="#memory">Working with Memory</a>
           <ol>
-            <li><a href="#pointers">Declaring pointers</a></li>
+            <li><a href="#allocating-mem">Allocating and binding memory to the Renderscript</a></li>
 
-            <li><a href="#struct-pointer-reflection">How pointers are reflected</a></li>
-
-            <li><a href="#binding">Allocating and binding memory to the RenderScript</a></li>
-
-            <li><a href="#read-write-dynamic">Reading and writing to memory</a></li>
+            <li><a href="#read-write">Reading and writing to memory</a></li>
 
           </ol>
         </li>
-        <li>
-          <a href="#static">Static Memory Allocations</a>
-        </li>
       </ol>
     </div>
   </div>
 
-  <p>RenderScript offers a high performance 3D graphics rendering and compute API at the native
-  level, which you write in the C (C99 standard). The main advantages of RenderScript are:</p>
+  <p>Renderscript offers a high performance 3D graphics rendering and compute API at the native
+  level that you write in C (C99 standard). The main advantages of Renderscript are:</p>
   <ul>
-    <li>Portability: RenderScript is designed to run on many types of devices with different CPU
-    and GPU architectures. It supports all of these architectures without having to target each
-    device, because the code is compiled and cached on the device at runtime.</li>
+    <li>Portability: Renderscript is designed to run on many types of devices with different
+    processor (CPU, GPU, and DSP for instance) architectures. It supports all of these architectures without
+    having to target each device, because the code is compiled and cached on the device
+    at runtime.</li>
 
-    <li>Performance: RenderScript provides similar performance to OpenGL with the NDK while
-    offering the portability of the OpenGL APIs provided by the Android framework ({@link
-    android.opengl}). In addition, it also offers a high performance compute API that is not
-    offered by OpenGL.</li>
+    <li>Performance: Renderscript provides similar performance to OpenGL with the NDK and also
+    provides a high performance compute API that is not offered by OpenGL.</li>
 
-    <li>Usability: RenderScript simplifies development when possible, such as eliminating JNI glue code
+    <li>Usability: Renderscript simplifies development when possible, such as eliminating JNI glue code
     and simplifying mesh setup.</li>
   </ul>
 
   <p>The main disadvantages are:</p>
 
   <ul>
-    <li>Development complexity: RenderScript introduces a new set of APIs that you have to learn.
-    RenderScript also handles memory differently compared to OpenGL with the Android framework APIs
-    or NDK.</li>
+    <li>Development complexity: Renderscript introduces a new set of APIs that you have to learn.
+    Renderscript also allocates memory differently compared to OpenGL with the Android framework APIs.
+    However, these issues are not hard to understand and Renderscript offers many features that
+    make it easier than OpenGL to initialize rendering.</li>
 
-    <li>Debugging visibility: RenderScript can potentially execute (planned feature for later releases)
-    on processors other than the main CPU (such as the GPU), so if this occurs, debugging becomes more difficult. 
+    <li>Debugging visibility: Renderscript can potentially execute (planned feature for later releases)
+    on processors other than the main CPU (such as the GPU), so if this occurs, debugging becomes more difficult.
     </li>
-
-    <li>Less features: RenderScript does not provide as many features as OpenGL such as all the compressed
-    texture formats or GL extensions.</li>
   </ul>
 
-  <p>You need to consider all of the aspects of RenderScript before deciding when to use it. The following list describes
-  general guidelines on when to use OpenGL (framework APIs or NDK) or RenderScript:</p>
-  <ul>
-    <li>If you are doing simple graphics rendering and performance is not critical, you probably want to use the
-  Android framework OpenGL APIs, which still provide adequate performance, to eliminate the added coding and debugging complexity of
-  RenderScript.</li>
 
-  <li>If you want the most flexibility and features while maintaining relatively good debugging
-  support, you probably want to use OpenGL and the NDK. Applications that require this are high end
-  or complicated games, for example.</li>
- 
-  <li>If you want a solution that is portable, has good performance,
-  and you don't need the full feature set of OpenGL, RenderScript is a good solution. If you also
-  need a high performance compute language, then RenderScript offers that as well.
-  Good candidates for RenderScript are graphics intensive UIs that require 3D rendering, live wallpapers,
-  or applications that require intensive mathematical computation.</li>
-  </ul>
-
-  <p>For an example of RenderScript in action, install the RenderScript sample applications that
+  <p>For an example of Renderscript in action, install the Renderscript sample applications that
   are shipped with the SDK in <code>&lt;sdk_root&gt;/samples/android-11/RenderScript</code>.
-  You can also see a typical use of RenderScript with the 3D carousel view in the Android 3.x
+  You can also see a typical use of Renderscript with the 3D carousel view in the Android 3.x
   versions of Google Books and YouTube.</p>
 
-  <h2 id="overview">RenderScript System Overview</h2>
+  <h2 id="overview">Renderscript Overview</h2>
+  <p>The Renderscript runtime operates at the native level and still needs to communicate
+with the Android VM, so the way a Renderscript application is setup is different from a pure VM
+application. An application that uses Renderscript is still a traditional Android application that
+runs in the VM, but you write Renderscript code for the parts of your program that require
+it. Using Renderscript can be as simple as offloading a few math calculations or as complicated as
+rendering an entire 3D game. No matter what you use it for, Renderscript remains platform
+independent, so you do not have to target multiple architectures (for example,
+ARM v5, ARM v7, x86).</p>
 
-  <p>The RenderScript system adopts a control and slave architecture where the low-level native
+  <p>The Renderscript system adopts a control and slave architecture where the low-level Renderscript runtime
   code is controlled by the higher level Android system that runs in a virtual machine (VM). The
-  Android VM still retains all control of memory and lifecycle management and calls the native
-  RenderScript code when necessary. The native code is compiled to intermediate bytecode (LLVM) and
-  packaged inside your application's <code>.apk</code> file. On the device, the bytecode is
-  compiled (just-in-time) to machine code that is further optimized for the device that it is
-  running on. The compiled code on the device is cached, so subsequent uses of the RenderScript
-  enabled application do not recompile the intermediate code. RenderScript has three layers of code
-  to enable communication between the native and Android framework code:</p>
+  Android VM still retains all control of memory management and binds memory that it allocates to
+  the Renderscript runtime, so the Renderscript code can access it. The Android framework makes
+asynchronous calls to Renderscript, and the calls are placed in a message queue and processed
+as soon as possible. Figure 1 shows how the Renderscript system is structured.</p>
+
+   <img id="figure1" src="{@docRoot}images/rs_overview.png" />
+  <p class="img-caption"><strong>Figure 1.</strong> Renderscript system overview</p>
+
+  <p>When using Renderscript, there are three layers of APIs that enable communication between the
+  Renderscript runtime and Android framework code:</p>
 
   <ul>
-    <li>The native RenderScript layer does the intensive computation or graphics rendering. You
-    define your native code in <code>.rs</code> and <code>.rsh</code> files.</li>
+    <li>The Renderscript runtime APIs allow you to do the computation or graphics rendering
+    that is required by your application.</li>
 
-    <li>The reflected layer is a set of classes that are reflected from the native code. It is basically
-    a wrapper around the native code that allows the Android framework to interact with native RenderScripts.
-    The Android build tools automatically generate the classes for this layer during
-    the build process and eliminates the need to write JNI glue code, like with the NDK.</li>
+    <li>The reflected layer APIs are a set of classes that are reflected from your Renderscript
+runtime code. It is basically a wrapper around the Renderscript code that allows the Android
+framework to interact with the Renderscript runtime. The Android build tools automatically generate the
+classes for this layer during the build process. These classes eliminate the need to write JNI glue
+code, like with the NDK.</li>
 
-    <li>The Android framework layer is comprised of the Android framework
-     APIs, which include the {@link android.renderscript} package. This layer gives high level commands
-     like, "rotate the view" or "filter the bitmap", by calling the reflected layer, which in turn calls
-     the native layer. </li>
+    <li>The Android framework APIs, which include the {@link android.renderscript} package, allow you to
+    build your application using traditional Android components such as activities and views. When
+    using Renderscript, this layer calls the reflected layer to access the Renderscript
+    runtime.</li>
   </ul>
 
-  <h3 id="native">Native RenderScript layer</h3>
+ <p></p>
 
-  <p>The native RenderScript layer consists of your RenderScript code, which is compiled and
-  executed in a compact and well defined runtime. Your RenderScript code has access to a limited
-  amount of functions because it cannot access the NDK or standard C functions, since they must be guaranteed to
-  run on a standard CPU. The RenderScript runtime was designed to run on different types of processors,
-  which may not be the CPU, so it cannot guarantee support for standard C libraries. What
-  RenderScript does offer is an API that supports intensive computation and graphics rendering with a collection of math
-  and graphics APIs.</p>
+  <h2 id="native">Renderscript Runtime Layer</h2>
 
-  <p>Some key features of the native RenderScript libraries include:</p>
+  <p>Your Renderscript code is compiled and
+  executed in a compact and well-defined runtime layer. The Renderscript runtime APIs offer support for
+intensive computation and graphics rendering that is portable and automatically scalable to the
+amount of cores available on a processor.
+</p>
+<p class="note"><strong>Note:</strong> The standard C functions in the NDK must be
+  guaranteed to run on a CPU, so Renderscript cannot access these libraries,
+  because Renderscript is designed to run on different types of processors.</p>
+
+<p>You define your Renderscript code in <code>.rs</code>
+  and <code>.rsh</code> files in the <code>src/</code> directory of your Android project. The code
+  is compiled to intermediate bytecode by the
+  <code>llvm</code> compiler that runs as part of an Android build. When your application
+  runs on a device, the bytecode is then compiled (just-in-time) to machine code by another
+  <code>llvm</code> compiler that resides on the device. The machine code is optimized for the
+  device and also cached, so subsequent uses of the Renderscript enabled application does not
+  recompile the bytecode.</p>
+
+  <p>Some key features of the Renderscript runtime libraries include:</p>
 
   <ul>
-    <li>A large collection of math functions with both scalar and vector typed overloaded versions
-    of many common routines. Operations such as adding, multiplying, dot product, and cross product
-    are available.</li>
-
-    <li>Conversion routines for primitive data types and vectors, matrix routines, date and time
-    routines, and graphics routines.</li>
-
-    <li>Logging functions</li>
 
     <li>Graphics rendering functions</li>
 
     <li>Memory allocation request features</li>
 
-    <li>Data types and structures to support the RenderScript system such as Vector types for
+    <li>A large collection of math functions with both scalar and vector typed overloaded versions
+    of many common routines. Operations such as adding, multiplying, dot product, and cross product
+    are available as well as atomic arithmetic and comparison functions.</li>
+
+    <li>Conversion routines for primitive data types and vectors, matrix routines, date and time
+    routines, and graphics routines.</li>
+
+    <li>Data types and structures to support the Renderscript system such as Vector types for
     defining two-, three-, or four-vectors.</li>
+
+    <li>Logging functions</li>
   </ul>
 
-  <p>The RenderScript header files and LLVM front-end libraries are located in the <code>include/</code> and
-  <code>clang-include/</code> directories in the
-  <code>&lt;sdk_root&gt;/platforms/android-11/renderscript/</code> directory of the Android SDK. The
-  headers are automatically included for you, except for the RenderScript graphics specific header file, which
+  <p>See the Renderscript runtime API reference for more information on the available functions. The
+  Renderscript header files are automatically included for you, except for the Renderscript graphics header file, which
   you can include as follows:</p>
-  <pre>
-#include "rs_graphics.rsh"
-</pre>
 
-  <h3 id="reflected">Reflected layer</h3>
+<pre>#include "rs_graphics.rsh"</pre>
+
+  <h2 id="reflected">Reflected Layer</h2>
 
   <p>The reflected layer is a set of classes that the Android build tools generate to allow access
-  to the native RenderScript code from the Android VM. This layer defines entry points for
-  RenderScript functions and variables, so that you can interact with them with the Android
-  framework. This layer also provides methods and constructors that allow you to allocate memory
-  for pointers that are defined in your RenderScript code. The following list describes the major
+  to the Renderscript runtime from the Android framework. This layer also provides methods
+and constructors that allow you to allocate and work with memory for pointers that are defined in
+your Renderscript code. The following list describes the major
   components that are reflected:</p>
 
   <ul>
     <li>Every <code>.rs</code> file that you create is generated into a class named
-    <code>ScriptC_<em>renderscript_filename</em></code> of type {@link
-    android.renderscript.ScriptC}. This is the <code>.java</code> version of your <code>.rs</code>
-    file, which you can call from the Android framework. This class contains the following
-    reflections:
+    <code>project_root/gen/package/name/ScriptC_<em>renderscript_filename</em></code> of
+type {@link android.renderscript.ScriptC}. This file is the <code>.java</code> version of your
+<code>.rs</code> file, which you can call from the Android framework. This class contains the
+following items reflected from the <code>.rs</code> file:
 
       <ul>
-        <li>Non-static functions in your <code>.rs</code> file.</li>
+        <li>Non-static functions</li>
 
-        <li>Non-static, global RenderScript variables. Accessor methods are generated for each
-        variable, so you can read and write the natively declared variables from the Android
-        framework. The <code>get</code> method comes with a one-way communication restriction. The
-        last value that is set from the Android framework is always returned during a call to a
-        <code>get</code> method. If the native RenderScript code changes the value, the change does
-        not propagate back to the Android framework layer.
-        If the global variables are initialized
-        in the native RenderScript code, those values are used to initialize the corresponding
-        values in the Android framework layer. If global variables are marked as
-        <code>const</code>, then a <code>set</code> method is not generated.</li>
-        <li>Global pointers generate a special method named <code>bind_<em>pointer_name</em></code>
-        instead of a <code>set()</code> method. This method allows you to bind the memory that is
-        allocated in the Android VM for the pointer to the native RenderScript (you cannot allocate
-        memory in your <code>.rs</code> file). You can read and write to this memory from both the
-        Android framework and RenderScript code. For more information, see <a href="mem-mgmt">Working
-        with Memory and Data</a></li>
+        <li>Non-static, global Renderscript variables. Accessor methods are generated for each
+        variable, so you can read and write the Renderscript variables from the Android
+        framework. If a global variable is initialized at the Renderscript runtime layer, those
+values are used to initialize the corresponding values in the Android framework layer. If global
+variables are marked as <code>const</code>, then a <code>set</code> method is not
+generated.</p></li>
+
+        <li>Global pointers</li>
       </ul>
     </li>
 
     <li>A <code>struct</code> is reflected into its own class named
-    <code>ScriptField_<em>struct_name</em></code>, which extends {@link
+
+    <code>project_root/gen/package/name/ScriptField_struct_name</em></code>, which extends {@link
     android.renderscript.Script.FieldBase}. This class represents an array of the
     <code>struct</code>, which allows you to allocate memory for one or more instances of this
     <code>struct</code>.</li>
   </ul>
 
-  <h3 id="framework">Android framework layer</h3>
 
-  <p>The Android framework layer consists of the usual Android framework APIs, which include the
-    RenderScript APIs in {@link android.renderscript}. This layer handles things such as the
-    Activity lifecycle and memory management of your application. It issues high level commands to
-    the native RenderScript code through the reflected layer and receives events from the user such
-    as touch and input events and relays them to your RenderScript code, if needed.
-  </p>
+<h3 id="func">Functions</h3>
+<p>Functions are reflected into the script class itself, located in
+<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. For
+example, if you declare the following function in your Renderscript code:</p>
 
-  <h2 id="mem-allocation">Memory Allocation APIs</h2>
+<pre>
+void touch(float x, float y, float pressure, int id) {
+    if (id >= 10) {
+        return;
+    }
 
-  <p>Before you begin writing your first RenderScript application, you must understand how 
-  memory is allocated for your RenderScript code and how data is shared between the native and VM
-  spaces. RenderScript allows you to access allocated memory in both the native layer
-  and Android system layer. All dynamic and static memory is allocated by the Android VM.
-  The Android VM also does reference counting and garbage collection for you. 
-  You can also explicitly free memory that you no longer need.</p>
-
-  <p class="note"><strong>Note:</strong> To declare temporary memory in your native RenderScript
-  code without allocating it in the Android VM, you can still do things like instantiate a scratch
-  buffer using an array.</p>
-
-  <p>The following classes support the memory management features of RenderScript in the Android
-  VM. You normally do not need to work with these classes directly, because the reflected layer
-  classes provide constructors and methods that set up the memory allocation for you. There are
-  some situations where you would want to use these classes directly to allocate memory on your
-  own, such as loading a bitmap from a resource or when you want to allocate memory for pointers to
-  primitive types.</p>
-
-  <table id="mem-mgmt-table">
-    <tr>
-      <th>Android Object Type</th>
-
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td>{@link android.renderscript.Element}</td>
-
-      <td>
-        <p>An element represents one cell of a memory allocation and can have two forms: Basic or
-        Complex.</p>
-
-        <p>A basic element contains a single component of data of any valid RenderScript data type.
-        Examples of basic element data types include a single float value, a float4 vector, or a
-        single RGB-565 color.</p>
-
-        <p>Complex elements contain a list of basic elements and are created from
-        <code>struct</code>s that you declare in your RenderScript code. The most basic primitive
-        type determines the data alignment of the memory. For example, a float4 vector subelement
-        is alligned to <code>sizeof(float)</code> and not <code>sizeof(float4)</code>. The ordering
-        of the elements in memory are the order in which they were added, with each component
-        aligned as necessary.</p>
-      </td>
-    </tr>
-
-    <tr>
-      <td>{@link android.renderscript.Type}</td>
-
-      <td>
-        A type is a memory allocation template and consists of an element and one or more
-        dimensions. It describes the layout of the memory (basically an array of {@link
-        android.renderscript.Element}s) but does not allocate the memory for the data that it
-        describes.
-
-        <p>A type consists of five dimensions: X, Y, Z, LOD (level of detail), and Faces (of a cube
-        map). You can assign the X,Y,Z dimensions to any positive integer value within the
-        constraints of available memory. A single dimension allocation has an X dimension of
-        greater than zero while the Y and Z dimensions are zero to indicate not present. For
-        example, an allocation of x=10, y=1 is considered two dimensional and x=10, y=0 is
-        considered one dimensional. The LOD and Faces dimensions are booleans to indicate present
-        or not present.</p>
-      </td>
-    </tr>
-
-    <tr>
-      <td>{@link android.renderscript.Allocation}</td>
-
-      <td>
-        <p>An allocation provides the memory for applications based on a description of the memory
-        that is represented by a {@link android.renderscript.Type}. Allocated memory can exist in
-        many memory spaces concurrently. If memory is modified in one space, you must explicitly
-        synchronize the memory, so that it is updated in all the other spaces that it exists
-        in.</p>
-
-        <p>Allocation data is uploaded in one of two primary ways: type checked and type unchecked.
-        For simple arrays there are <code>copyFrom()</code> functions that take an array from the
-        Android system and copy it to the native layer memory store. The unchecked variants allow
-        the Android system to copy over arrays of structures because it does not support
-        structures. For example, if there is an allocation that is an array of n floats, the data
-        contained in a float[n] array or a byte[n*4] array can be copied.</p>
-      </td>
-    </tr>
-  </table>
-
-  <h2 id="dynamic">Working with dynamic memory allocations</h2>
-
-  <p>RenderScript has support for pointers, but you must allocate the memory in your Android framework
-  code. When you declare a global pointer in your <code>.rs</code> file, you allocate memory
-  through the appropriate reflected layer class and bind that memory to the native
-  RenderScript layer. You can read and write to this memory from the Android framework layer as well as the
-  RenderScript layer, which offers you the flexibility to modify variables in the most appropriate
-  layer. The following sections show you how to work with pointers, allocate memory for them, and
-  read and write to the memory.</p>
-
-  <h3 id="pointers">Declaring pointers</h3>
-
-  <p>Because RenderScript is written in C99, declaring a pointer is done in a familiar way. You can
-  declare pointers to a <code>struct</code> or a primitive type, but a <code>struct</code> cannot
-  contain pointers or nested arrays. The following code declares a <code>struct</code>, a pointer
-  to that <code>struct</code>, and a pointer of primitive type <code>int32_t</code> in an <code>.rs</code> file:</p>
-  <pre>
-#pragma version(1)
-#pragma rs java_package_name(com.example.renderscript)
-
-...
-
-typedef struct Point {
-      float2 point;
-  } Point_t;
-
-  Point_t *touchPoints;
-  int32_t *intPointer;
-
-...
+    touchPos[id].x = x;
+    touchPos[id].y = y;
+    touchPressure[id] = pressure;
+}
 </pre>
 
-<p>You cannot allocate memory for these pointers in your RenderScript code, but the Android
-build tools generate classes for you that allow you to allocate memory in the Android VM for use by
-your RenderScript code. These classes also let you read and write to the memory. The next section
-describes how these classes are generated through reflection.</p>
+<p>then the following code is generated:</p>
 
-  <h3>How pointers are reflected</h3>
+<pre>
+public void invoke_touch(float x, float y, float pressure, int id) {
+    FieldPacker touch_fp = new FieldPacker(16);
+    touch_fp.addF32(x);
+    touch_fp.addF32(y);
+    touch_fp.addF32(pressure);
+    touch_fp.addI32(id);
+    invoke(mExportFuncIdx_touch, touch_fp);
+}
+</pre>
+<p>
+Functions cannot have a return value, because the Renderscript system is designed to be
+asynchronous. When your Android framework code calls into Renderscript, the call is queued and is
+executed when possible. This restriction allows the Renderscript system to function without constant
+interruption and increases efficiency. If functions were allowed to have return values, the call
+would block until the value was returned.</p>
 
-  <p>Global variables have a getter and setter method generated. A global pointer generates a
-  <code>bind_pointerName()</code> method instead of a set() method. This method allows you to bind
-  the memory that is allocated in the Android VM to the native RenderScript. For example, the two
-  pointers in the previous section generate the following accessor methods in the <code>ScriptC_<em>rs_filename</em></code> file:</p>
+<p>
+If you want the Renderscript code to send a value back to the Android framework, use the
+<code>rsSendToClient()</code> function.
+</p>
+
+<h3 id="var">Variables</h3>
+
+  <p>Variables of supported types are reflected into the script class itself, located in
+<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. A set of accessor
+methods are generated for each variable. For example, if you declare the following variable in
+your Renderscript code:</p>
+  <pre>uint32_t unsignedInteger = 1;</pre>
+
+  <p>then the following code is generated:</p>
+
+<pre>
+private long mExportVar_unsignedInteger;
+public void set_unsignedInteger(long v){
+    mExportVar_unsignedInteger = v;
+    setVar(mExportVarIdx_unsignedInteger, v);
+}
+
+public long get_unsignedInteger(){
+    return mExportVar_unsignedInteger;
+}
+  </pre>
+
+  <h3 id="pointer">Pointers</h3>
+  <p>Pointers are reflected into the script class itself, located in
+<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. You
+can declare pointers to a <code>struct</code> or any of the supported Renderscript types, but a
+<code>struct</code> cannot contain pointers or nested arrays. For example, if you declare the
+following pointers to a <code>struct</code> and <code>int32_t</code></p>
+
+<pre>
+typedef struct Point {
+    float2 point;
+} Point_t;
+
+Point_t *touchPoints;
+int32_t *intPointer;
+</pre>
+  <p>then the following code is generated in:</p>
+
   <pre>
-
-    private ScriptField_Point mExportVar_touchPoints;
-    public void bind_touchPoints(ScriptField_Point v) {
-        mExportVar_touchPoints = v;
-        if (v == null) bindAllocation(null, mExportVarIdx_touchPoints);
-        else bindAllocation(v.getAllocation(), mExportVarIdx_touchPoints);
+private ScriptField_Point mExportVar_touchPoints;
+public void bind_touchPoints(ScriptField_Point v) {
+    mExportVar_touchPoints = v;
+    if (v == null) bindAllocation(null, mExportVarIdx_touchPoints);
+    else bindAllocation(v.getAllocation(), mExportVarIdx_touchPoints);
     }
 
     public ScriptField_Point get_touchPoints() {
-        return mExportVar_touchPoints;
+    return mExportVar_touchPoints;
     }
 
     private Allocation mExportVar_intPointer;
     public void bind_intPointer(Allocation v) {
-        mExportVar_intPointer = v;
-        if (v == null) bindAllocation(null, mExportVarIdx_intPointer);
-        else bindAllocation(v, mExportVarIdx_intPointer);
+    mExportVar_intPointer = v;
+    if (v == null) bindAllocation(null, mExportVarIdx_intPointer);
+    else bindAllocation(v, mExportVarIdx_intPointer);
     }
 
     public Allocation get_intPointer() {
         return mExportVar_intPointer;
     }
+  </pre>
 
-</pre>
+<p>A <code>get</code> method and a special method named <code>bind_<em>pointer_name</em></code>
+(instead of a <code>set()</code> method) is generated. This method allows you to bind the memory
+that is allocated in the Android VM to the Renderscript runtime (you cannot allocate
+memory in your <code>.rs</code> file). For more information, see <a href="#memory">Working
+with Allocated Memory</a>.
+</p>
 
-  <h3>Allocating and binding memory to the RenderScript</h3>
-
-  <p>When the build tools generate the reflected layer, you can use the appropriate class
-  (<code>ScriptField_Point</code>, in our example) to allocate memory for a pointer. To do this,
-  you call the constructor for the {@link android.renderscript.Script.FieldBase} class and specify
-  the amount of structures that you want to allocate memory for. To allocate memory for a primitive
-  type pointer, you must build an allocation manually, using the memory management classes
-  described in <a href="#mem-mgmt-table">Table 1</a>. The example below allocates memory for both
-  the <code>intPointer</code> and <code>touchPoints</code> pointer and binds it to the
-  RenderScript:</p>
-  <pre>
-private RenderScriptGL glRenderer;
-private ScriptC_example script;
-private Resources resources;
-
-public void init(RenderScriptGL rs, Resources res) {
-   //get the rendering context and resources from the calling method
-   glRenderer = rs; 
-   resources = res; 
-   
-   //allocate memory for the struct pointer, calling the constructor
-    ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2); 
-    
-   //Create an element manually and allocate memory for the int pointer 
-    intPointer = Allocation.createSized(glRenderer, Element.I32(glRenderer), 2); 
-    
-    //create an instance of the RenderScript, pointing it to the bytecode resource
-    mScript = new ScriptC_example(glRenderer, resources, R.raw.example); 
-    
-    // bind the struct and int pointers to the RenderScript
-    mScript.bind_touchPoints(touchPoints); 
-    script.bind_intPointer(intPointer);
-    
-    //bind the RenderScript to the rendering context
-    glRenderer.bindRootScript(script);
-}
-</pre>
-
-  <h3>Reading and writing to memory</h3>
-
-  <p>Although you have to allocate memory within the Android VM, you can work with the memory both
-  in your native RenderScript code and in your Android code. Once memory is bound, the native
-  RenderScript can read and write to the memory directly. You can also just use the accessor
-  methods in the reflected classes to access the memory. If you modify memory in the Android
-  framework, it gets automatically synchronized to the native layer. If you modify memory in the <code>.rs</code>
-  file, these changes do not get propagated back to the Android framework.
-  For example, you can modify the struct in your Android code like this:</p>
-  <pre>
-int index = 0;
-boolean copyNow = true;
-Float2 point = new Float2(0.0f, 0.0f);
-touchPoints.set_point(index, point, copyNow);
-</pre>then read it in your native RenderScript code like this:
-  <pre>
-rsDebug("Printing out a Point", touchPoints[0].point.x, touchPoints[0].point.y);
-</pre>
-
-  <h2>Working with statically allocated memory</h2>
-
-  <p>Non-static, global primitives and structs that you declare in your RenderScript are easier to work with,
-  because the memory is statically allocated at compile time. Accessor methods to set and get these
-  variables are generated when the Android build tools generate the reflected layer classes. You
-  can get and set these variables using the provided accessor methods.
- <p class="note"><strong>Note:</strong> The <code>get</code> method comes with a one-way communication restriction. The last value
-  that is set from the Android framework is always returned during a call to a <code>get</code>
-  method. If the native RenderScript code changes the value, the change does not propagate back to
-  the Android framework layer. If the global variables are initialized in the native RenderScript
-  code, those values are used to initialize the corresponding values in the Android framework
-  layer. If global variables are marked as <code>const</code>, then a <code>set</code> method is
-  not generated.</p>
-  </p>
-
-  <p>For example, if you declare the following primitive in your RenderScript code:</p>
-  <pre>
-  uint32_t unsignedInteger = 1;
-  
-</pre>
-<p>then the following code is generated in <code>ScriptC_<em>script_name</em>.java</code>:</p>
-  <pre>
- private final static int mExportVarIdx_unsignedInteger = 9;
-    private long mExportVar_unsignedInteger;
-    public void set_unsignedInteger(long v) {
-        mExportVar_unsignedInteger = v;
-        setVar(mExportVarIdx_unsignedInteger, v);
-    }
-
-    public long get_unsignedInteger() {
-        return mExportVar_unsignedInteger;
-    }
-</pre>
-
-  <p class="note"><strong>Note:</strong> The mExportVarIdx_unsignedInteger variable represents the
-  index of the <code>unsignedInteger</code>'s in an array of statically allocated primitives. You do
-  not need to work with or be aware of this index.</p>
-  
-  <p>For a <code>struct</code>, the Android build tools generate a class named
-  <code>&lt;project_root&gt;/gen/com/example/renderscript/ScriptField_struct_name</code>. This
-  class represents an array of the <code>struct</code> and allows you to allocate memory for a
-  specified number of <code>struct</code>s. This class defines:</p>
-
-  <ul>
-    <li>Overloaded constructors that allow you to allocate memory. The
-    <code>ScriptField_<em>struct_name</em>(RenderScript rs, int count)</code> constructor allows
-    you to define the number of structures that you want to allocate memory for with the
-    <code>count</code> parameter. The <code>ScriptField_<em>struct_name</em>(RenderScript rs, int
-    count, int usages)</code> constructor defines an extra parameter, <code>usages</code>, that
-    lets you specify the memory space of this memory allocation. There are four memory space
-    possibilities:
-
-      <ul>
-        <li>{@link android.renderscript.Allocation#USAGE_SCRIPT}: Allocates in the script memory
-        space. This is the default memory space if you do not specify a memory space.</li>
-
-        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}: Allocates in the
-        texture memory space of the GPU.</li>
-
-        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_VERTEX}: Allocates in the vertex
-        memory space of the GPU.</li>
-
-        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_CONSTANTS}: Allocates in the
-        constants memory space of the GPU that is used by the various program objects.</li>
-      </ul>
-
-      <p>You can specify one or all of these memory spaces by OR'ing them together. Doing so notifies
-      the RenderScript runtime that you intend on accessing the data in the specified memory spaces. The following
-      example allocates memory for a custom data type in both the script and vertex memory spaces:</p>
+  <h3 id="struct">Structs</h3>
+  <p>Structs are reflected into their own classes, located in
+    <code>&lt;project_root&gt;/gen/com/example/renderscript/ScriptField_struct_name</code>. This
+    class represents an array of the <code>struct</code> and allows you to allocate memory for a
+    specified number of <code>struct</code>s. For example, if you declare the following struct:</p>
 <pre>
-ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2,
-Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_VERTEX);
+typedef struct Point {
+float2 point;
+} Point_t;
 </pre>
 
-      <p>If you modify the memory in one memory space and want to push the updates to the rest of
-      the memory spaces, call <code>rsgAllocationSyncAll()</code> in your RenderScript code to
-      synchronize the memory.</p>
-    </li>
-
-    <li>A static nested class, <code>Item</code>, allows you to create an instance of the
-    <code>struct</code>, in the form of an object. This is useful if it makes more sense to work
-    with the <code>struct</code> in your Android code. When you are done manipulating the object,
-    you can push the object to the allocated memory by calling <code>set(Item i, int index, boolean
-    copyNow)</code> and setting the <code>Item</code> to the desired position in the array. The
-    native RenderScript code automatically has access to the newly written memory.
-
-    <li>Accessor methods to get and set the values of each field in a struct. Each of these
-    accessor methods have an <code>index</code> parameter to specify the <code>struct</code> in the
-    array that you want to read or write to. Each setter method also has a <code>copyNow</code>
-    parameter that specifies whether or not to immediately sync this memory to the native
-    RenderScript layer. To sync any memory that has not been synced, call <code>copyAll()</code>.</li>
-
-    <li>The createElement() method creates an object that describes the memory layout of the struct.</li>
-
-    <li>resize() works much like a <code>realloc</code>, allowing you to expand previously
-    allocated memory, maintaining the current values that were previously set.</li>
-
-    <li>copyAll() synchronizes memory that was set on the framework level to the native level. When you call
-    a set accessor method on a member, there is an optional <code>copyNow</code> boolean parameter that you can specify. Specifying
-    <code>true</code> synchronizes the memory when you call the method. If you specify false, you can call <code>copyAll()</code>
-    once, and it synchronizes memory for the all the properties that are not synchronized.</li>
-  </ul>
-
-  <p>The following example shows the reflected class, <code>ScriptField_Point.java</code> that is
-  generated from the Point <code>struct</code>.</p>
-  <pre>
-package com.example.renderscript;
+<p>then the following code is generated in <code>ScriptField_Point.java</code>:
+<pre>
+package com.example.android.rs.hellocompute;
 
 import android.renderscript.*;
 import android.content.res.Resources;
 
-
+  /**
+  * @hide
+  */
 public class ScriptField_Point extends android.renderscript.Script.FieldBase {
-    static public class Item {
-        public static final int sizeof = 8;
 
-        Float2 point;
+    static public class Item {
+        public static final int sizeof = 12;
+
+        Float2 position;
+        float size;
 
         Item() {
-            point = new Float2();
+            position = new Float2();
         }
-
     }
 
     private Item mItemArray[];
     private FieldPacker mIOBuffer;
     public static Element createElement(RenderScript rs) {
         Element.Builder eb = new Element.Builder(rs);
-        eb.add(Element.F32_2(rs), "point");
+        eb.add(Element.F32_2(rs), "position");
+        eb.add(Element.F32(rs), "size");
         return eb.create();
     }
 
@@ -573,9 +362,11 @@
     }
 
     private void copyToArray(Item i, int index) {
-        if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count */);
+        if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count
+        */);
         mIOBuffer.reset(index * Item.sizeof);
-        mIOBuffer.addF32(i.point);
+        mIOBuffer.addF32(i.position);
+        mIOBuffer.addF32(i.size);
     }
 
     public void set(Item i, int index, boolean copyNow) {
@@ -585,7 +376,6 @@
             copyToArray(i, index);
             mAllocation.setFromFieldPacker(index, mIOBuffer);
         }
-
     }
 
     public Item get(int index) {
@@ -593,24 +383,42 @@
         return mItemArray[index];
     }
 
-    public void set_point(int index, Float2 v, boolean copyNow) {
-        if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count */)fnati;
+    public void set_position(int index, Float2 v, boolean copyNow) {
+        if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count */);
         if (mItemArray == null) mItemArray = new Item[getType().getX() /* count */];
         if (mItemArray[index] == null) mItemArray[index] = new Item();
-        mItemArray[index].point = v;
-        if (copyNow)  {
+        mItemArray[index].position = v;
+        if (copyNow) {
             mIOBuffer.reset(index * Item.sizeof);
             mIOBuffer.addF32(v);
             FieldPacker fp = new FieldPacker(8);
             fp.addF32(v);
             mAllocation.setFromFieldPacker(index, 0, fp);
         }
-
     }
 
-    public Float2 get_point(int index) {
+    public void set_size(int index, float v, boolean copyNow) {
+        if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count */);
+        if (mItemArray == null) mItemArray = new Item[getType().getX() /* count */];
+        if (mItemArray[index] == null) mItemArray[index] = new Item();
+        mItemArray[index].size = v;
+        if (copyNow)  {
+            mIOBuffer.reset(index * Item.sizeof + 8);
+            mIOBuffer.addF32(v);
+            FieldPacker fp = new FieldPacker(4);
+            fp.addF32(v);
+            mAllocation.setFromFieldPacker(index, 1, fp);
+        }
+    }
+
+    public Float2 get_position(int index) {
         if (mItemArray == null) return null;
-        return mItemArray[index].point;
+        return mItemArray[index].position;
+    }
+
+    public float get_size(int index) {
+        if (mItemArray == null) return 0;
+        return mItemArray[index].size;
     }
 
     public void copyAll() {
@@ -627,13 +435,361 @@
             System.arraycopy(mItemArray, 0, ni, 0, copySize);
             mItemArray = ni;
         }
-
         mAllocation.resize(newSize);
         if (mIOBuffer != null) mIOBuffer = new FieldPacker(Item.sizeof * getType().getX()/* count */);
     }
-
 }
 </pre>
 
-</body>
-</html>
+<p>The generated code is provided to you as a convenience to allocate memory for structs requested
+by the Renderscript runtime and to interact with <code>struct</code>s
+in memory. Each <code>struct</code>'s class defines the following methods and constructors:</p>
+
+  <ul>
+    <li>Overloaded constructors that allow you to allocate memory. The
+      <code>ScriptField_<em>struct_name</em>(RenderScript rs, int count)</code> constructor allows
+      you to define the number of structures that you want to allocate memory for with the
+      <code>count</code> parameter. The <code>ScriptField_<em>struct_name</em>(RenderScript rs, int
+        count, int usages)</code> constructor defines an extra parameter, <code>usages</code>, that
+      lets you specify the memory space of this memory allocation. There are four memory space
+      possibilities:
+
+      <ul>
+        <li>{@link android.renderscript.Allocation#USAGE_SCRIPT}: Allocates in the script memory
+          space. This is the default memory space if you do not specify a memory space.</li>
+
+        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}: Allocates in the
+          texture memory space of the GPU.</li>
+
+        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_VERTEX}: Allocates in the vertex
+          memory space of the GPU.</li>
+
+        <li>{@link android.renderscript.Allocation#USAGE_GRAPHICS_CONSTANTS}: Allocates in the
+          constants memory space of the GPU that is used by the various program objects.</li>
+      </ul>
+
+      <p>You can specify multiple memory spaces by using the bitwise <code>OR</code> operator. Doing so
+        notifies the Renderscript runtime that you intend on accessing the data in the
+        specified memory spaces. The following example allocates memory for a custom data type
+        in both the script and vertex memory spaces:</p>
+      <pre>
+        ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2,
+        Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_VERTEX);
+      </pre>
+
+      <p>If you modify the memory in one memory space and want to push the updates to the rest of
+        the memory spaces, call <code>rsgAllocationSyncAll()</code> in your Renderscript code to
+        synchronize the memory.</p>
+    </li>
+
+    <li>A static nested class, <code>Item</code>, allows you to create an instance of the
+      <code>struct</code>, in the form of an object. This nested class is useful if it makes more sense to work
+      with the <code>struct</code> in your Android code. When you are done manipulating the object,
+      you can push the object to the allocated memory by calling <code>set(Item i, int index,
+        boolean copyNow)</code> and setting the <code>Item</code> to the desired position in
+the array. The Renderscript runtime automatically has access to the newly written memory.
+
+      <li>Accessor methods to get and set the values of each field in a struct. Each of these
+        accessor methods have an <code>index</code> parameter to specify the <code>struct</code> in
+        the array that you want to read or write to. Each setter method also has a
+<code>copyNow</code> parameter that specifies whether or not to immediately sync this memory
+to the Renderscript runtime. To sync any memory that has not been synced, call
+        <code>copyAll()</code>.</li>
+
+      <li>The <code>createElement()</code> method creates a description of the struct in memory. This
+      description is used to allocate memory consisting of one or many elements.</li>
+
+      <li><code>resize()</code> works much like a <code>realloc()</code> in C, allowing you to
+expand previously allocated memory, maintaining the current values that were previously
+created.</li>
+
+      <li><code>copyAll()</code> synchronizes memory that was set on the framework level to the
+Renderscript runtime. When you call a set accessor method on a member, there is an optional
+<code>copyNow</code> boolean parameter that you can specify. Specifying
+        <code>true</code> synchronizes the memory when you call the method. If you specify false,
+        you can call <code>copyAll()</code> once, and it synchronizes memory for all the
+properties that are not yet synchronized.</li>
+    </ul>
+
+  <h2 id="mem-allocation">Memory Allocation APIs</h2>
+
+ <p>Applications that use Renderscript still run in the Android VM. The actual Renderscript code, however, runs natively and
+  needs access to the memory allocated in the Android VM. To accomplish this, you must
+  attach the memory that is allocated in the VM to the Renderscript runtime. This
+process, called binding, allows the Renderscript runtime to seamlessly work with memory that it
+requests but cannot explicitly allocate. The end result is essentially the same as if you had
+called <code>malloc</code> in C. The added benefit is that the Android VM can carry out garbage collection as well as
+share memory with the Renderscript runtime layer. Binding is only necessary for dynamically allocated memory. Statically
+allocated memory is automatically created for your Renderscript code at compile time. See <a href="#figure1">Figure 1</a>
+for more information on how memory allocation occurs.
+</p>
+
+  <p>To support this memory allocation system, there are a set of APIs that allow the Android VM to
+allocate memory and offer similar functionality to a <code>malloc</code> call. These classes
+essentially describe how memory should be allocated and also carry out the allocation. To better
+understand how these classes work, it is useful to think of them in relation to a simple
+<code>malloc</code> call that can look like this: </p>
+
+  <pre>array = (int *)malloc(sizeof(int)*10);</pre>
+
+  <p>The <code>malloc</code> call can be broken up into two parts: the size of the memory being allocated (<code>sizeof(int)</code>),
+  along with how many units of that memory should be allocated (10). The Android framework provides classes for these two parts as
+  well as a class to represent <code>malloc</code> itself.</p>
+
+  <p>The {@link android.renderscript.Element} class represents the (<code>sizeof(int)</code>) portion
+  of the <code>malloc</code> call and encapsulates one cell of a memory allocation, such as a single
+  float value or a struct. The {@link android.renderscript.Type} class encapsulates the {@link android.renderscript.Element}
+  and the amount of elements to allocate (10 in our example). You can think of a {@link android.renderscript.Type} as
+  an array of {@link android.renderscript.Element}s. The {@link android.renderscript.Allocation} class does the actual
+  memory allocation based on a given {@link android.renderscript.Type} and represents the actual allocated memory.</p>
+
+  <p>In most situations, you do not need to call these memory allocation APIs directly. The reflected layer
+  classes generate code to use these APIs automatically and all you need to do to allocate memory is call a
+  constructor that is declared in one of the reflected layer classes and then bind
+  the resulting memory {@link android.renderscript.Allocation} to the Renderscript.
+  There are some situations where you would want to use these classes directly to allocate memory on your
+  own, such as loading a bitmap from a resource or when you want to allocate memory for pointers to
+  primitive types. You can see how to do this in the
+  <a href="#allocating-mem">Allocating and binding memory to the Renderscript</a> section.
+  The following table describes the three memory management classes in more detail:</p>
+
+  <table id="mem-mgmt-table">
+    <tr>
+      <th>Android Object Type</th>
+
+      <th>Description</th>
+    </tr>
+
+    <tr>
+      <td>{@link android.renderscript.Element}</td>
+
+      <td>
+        <p>An element describes one cell of a memory allocation and can have two forms: basic or
+        complex.</p>
+
+        <p>A basic element contains a single component of data of any valid Renderscript data type.
+        Examples of basic element data types include a single <code>float</code> value, a <code>float4</code> vector, or a
+        single RGB-565 color.</p>
+
+        <p>Complex elements contain a list of basic elements and are created from
+        <code>struct</code>s that you declare in your Renderscript code. For instance an allocation
+        can contain multiple <code>struct</code>s arranged in order in memory. Each struct is considered as its
+        own element, rather than each data type within that struct.</p>
+      </td>
+    </tr>
+
+    <tr>
+      <td>{@link android.renderscript.Type}</td>
+
+      <td>
+        <p>A type is a memory allocation template and consists of an element and one or more
+        dimensions. It describes the layout of the memory (basically an array of {@link
+        android.renderscript.Element}s) but does not allocate the memory for the data that it
+        describes.</p>
+
+        <p>A type consists of five dimensions: X, Y, Z, LOD (level of detail), and Faces (of a cube
+        map). You can assign the X,Y,Z dimensions to any positive integer value within the
+        constraints of available memory. A single dimension allocation has an X dimension of
+        greater than zero while the Y and Z dimensions are zero to indicate not present. For
+        example, an allocation of x=10, y=1 is considered two dimensional and x=10, y=0 is
+        considered one dimensional. The LOD and Faces dimensions are booleans to indicate present
+        or not present.</p>
+      </td>
+    </tr>
+
+    <tr>
+      <td>{@link android.renderscript.Allocation}</td>
+
+      <td>
+        <p>An allocation provides the memory for applications based on a description of the memory
+        that is represented by a {@link android.renderscript.Type}. Allocated memory can exist in
+        many memory spaces concurrently. If memory is modified in one space, you must explicitly
+        synchronize the memory, so that it is updated in all the other spaces in which it exists.
+        </p>
+
+        <p>Allocation data is uploaded in one of two primary ways: type checked and type unchecked.
+        For simple arrays there are <code>copyFrom()</code> functions that take an array from the
+        Android system and copy it to the native layer memory store. The unchecked variants allow
+        the Android system to copy over arrays of structures because it does not support
+        structures. For example, if there is an allocation that is an array of n floats, the data
+        contained in a float[n] array or a <code>byte[n*4]</code> array can be copied.</p>
+      </td>
+    </tr>
+  </table>
+
+  <h2 id="memory">Working with Memory</h2>
+
+<p>Non-static, global variables that you declare in your Renderscript are allocated memory at compile time.
+You can work with these variables directly in your Renderscript code without having to allocate
+memory for them at the Android framework level. The Android framework layer also has access to these variables
+with the provided accessor methods that are generated in the reflected layer classes. If these variables are
+initialized at the Renderscript runtime layer, those values are used to initialize the corresponding
+values in the Android framework layer. If global variables are marked as const, then a <code>set</code> method is
+not generated.</p>
+
+
+<p class="note"><strong>Note:</strong> If you are using certain Renderscript structures that contain pointers, such as
+<code>rs_program_fragment</code> and <code>rs_allocation</code>, you have to obtain an object of the
+corresponding Android framework class first and then call the <code>set</code> method for that
+structure to bind the memory to the Renderscript runtime. You cannot directly manipulate these structures
+at the Renderscript runtime layer. Keep in mind that user-defined structures
+cannot contain pointers, so this restriction only applies to certain structures that are provided by Renderscript. 
+</p>
+
+<p>Renderscript also has support for pointers, but you must explicitly allocate the memory in your
+Android framework code. When you declare a global pointer in your <code>.rs</code> file, you
+allocate memory through the appropriate reflected layer class and bind that memory to the native
+Renderscript layer. You can interact with this memory from the Android framework layer as well as
+the Renderscript layer, which offers you the flexibility to modify variables in the most
+appropriate layer.</p>
+
+
+
+  <h3 id="allocating-mem">Allocating and binding dynamic memory to the Renderscript</h3>
+
+  <p>To allocate dynamic memory, you need to call the constructor of a
+  {@link android.renderscript.Script.FieldBase} class, which is the most common way. An alternative is to create an
+  {@link android.renderscript.Allocation} manually, which is required for things such as primitive type pointers. You should
+  use a {@link android.renderscript.Script.FieldBase} class constructor whenever available for simplicity.
+  After obtaining a memory allocation, call the reflected <code>bind</code> method of the pointer to bind the allocated memory to the
+  Renderscript runtime.</p>
+  <p>The example below allocates memory for both a primitive type pointer,
+   <code>intPointer</code>, and a pointer to a struct, <code>touchPoints</code>. It also binds the memory to the
+  Renderscript:</p>
+  <pre>
+private RenderScriptGL glRenderer;
+private ScriptC_example script;
+private Resources resources;
+
+public void init(RenderScriptGL rs, Resources res) {
+    //get the rendering context and resources from the calling method
+    glRenderer = rs;
+    resources = res;
+
+    //allocate memory for the struct pointer, calling the constructor
+    ScriptField_Point touchPoints = new ScriptField_Point(glRenderer, 2);
+
+    //Create an element manually and allocate memory for the int pointer
+    intPointer = Allocation.createSized(glRenderer, Element.I32(glRenderer), 2);
+
+    //create an instance of the Renderscript, pointing it to the bytecode resource
+    mScript = new ScriptC_example(glRenderer, resources, R.raw.example);
+
+    //bind the struct and int pointers to the Renderscript
+    mScript.bind_touchPoints(touchPoints);
+    script.bind_intPointer(intPointer);
+
+   ...
+}
+</pre>
+
+  <h3>Reading and writing to memory</h3>
+  <p>You can read and write to statically and dynamically allocated memory both at the Renderscript runtime
+  and Android framework layer.</p>
+
+<p>Statically allocated memory comes with a one-way communication restriction
+at the Renderscript runtime level. When Renderscript code changes the value of a variable, it is not
+communicated back to the Android framework layer for efficiency purposes. The last value
+that is set from the Android framework is always returned during a call to a <code>get</code>
+method. However, when Android framework code modifies a variable, that change can be communicated to
+the Renderscript runtime automatically or synchronized at a later time. If you need to send data
+from the Renderscript runtime to the Android framework layer, you can use the <code>rsSendToClient()</code> function
+to overcome this limitation.
+</p>
+<p>When working with dynamically allocated memory, any changes at the Renderscript runtime layer are propagated
+back to the Android framework layer if you modified the memory allocation using its associated pointer.
+Modifying an object at the Android framework layer immediately propagates that change back to the Renderscript
+runtime layer.</p>
+
+  <h4>Reading and writing to global variables</h4>
+
+  <p>Reading and writing to global variables is a straightforward process. You can use the accessor methods
+  at the Android framework level or set them directly in the Renderscript code. Keep in mind that any
+  changes that you make in your Renderscript code are not propagated back to the Android framework layer.</p>
+
+  <p>For example, given the following struct declared in a file named <code>rsfile.rs</code>:</p>
+<pre>
+typedef struct Point {
+    int x;
+    int y;
+} Point_t;
+
+Point_t point;
+
+</pre>
+<p>You can assign values to the struct like this directly in <code>rsfile.rs</code>. These values are not
+propagated back to the Android framework level:</p>
+<pre>
+point.x = 1;
+point.y = 1;
+</pre>
+
+<p>You can assign values to the struct at the Android framework layer like this. These values are 
+propagated back to the Renderscript runtime level:</p>
+<pre>
+ScriptC_rsfile mScript;
+
+...
+
+Item i = new ScriptField_Point.Item();
+i.x = 1;
+i.y = 1;
+mScript.set_point(i);
+</pre>
+
+<p>You can read the values in your Renderscript code like this:</p>
+
+<pre>
+rsDebug("Printing out a Point", point.x, point.y);
+</pre>
+
+<p>You can read the values in the Android framework layer with the following code. Keep in mind that this
+code only returns a value if one was set at the Android framework level. You will get a null pointer
+exception if you only set the value at the Renderscript runtime level:</p>
+
+<pre>
+Log.i("TAGNAME", "Printing out a Point: " + mScript.get_point().x + " " + mScript.get_point().y);
+System.out.println(point.get_x() + " " + point.get_y());
+</pre>
+
+<h4>Reading and writing global pointers</h4>
+
+<p>Assuming that memory has been allocated in the Android framework level and bound to the Renderscript runtime,
+you can read and write memory from the Android framework level by using the <code>get</code> and <code>set</code> methods for that pointer.
+In the Renderscript runtime layer, you can read and write to memory with pointers as normal and the changes are propagated
+back to the Android framework layer, unlike with statically allocated memory.</p>
+
+<p>For example, given the following pointer to a <code>struct</code> in a file named <code>rsfile.rs</code>:</p>
+<pre>
+typedef struct Point {
+    int x;
+    int y;
+} Point_t;
+
+Point_t *point;
+</pre>
+
+<p>Assuming you already allocated memory at the Android framework layer, you can access values in
+the <code>struct</code> as normal. Any changes you make to the struct via its pointer variable
+are automatically available to the Android framework layer:</p>
+
+<pre>
+point[index].x = 1;
+point[index].y = 1;
+</pre>
+
+<p>You can read and write values to the pointer at the Android framework layer as well:
+<pre>
+ScriptField_Point p = new ScriptField_Point(mRS, 1);
+    Item i = new ScriptField_Point.Item();
+    i.x=100;
+    i.y = 100;
+    p.set(i, 0, true);
+    mScript.bind_point(p);
+
+    points.get_x(0);            //read x and y from index 0
+    points.get_x(0);
+</pre>
+
+<p>Once memory is already bound, you do not have to rebind the memory to the Renderscript
+runtime every time you make a change to a value.</p>
diff --git a/docs/html/guide/topics/renderscript/reference.jd b/docs/html/guide/topics/renderscript/reference.jd
new file mode 100644
index 0000000..a0a9df2
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference.jd
@@ -0,0 +1,18 @@
+page.title=Runtime API Reference
+@jd:body
+
+<script language="JavaScript">
+
+function autoResize(element){
+    var newheight;
+    var newwidth;
+
+    newheight = element.contentWindow.document.body.scrollHeight + 20;
+    newwidth = element.contentWindow.document.body.scrollWidth;
+    element.height = (newheight) + "px";
+    element.width = (newwidth) + "px";
+}
+</script>
+
+
+<iframe SRC="{@docRoot}reference/renderscript/index.html" width="100%"  id="iframe" marginheight="0" frameborder="0" onLoad="autoResize(this);"></iframe>
diff --git a/docs/html/guide/topics/wireless/wifip2p.jd b/docs/html/guide/topics/wireless/wifip2p.jd
new file mode 100644
index 0000000..4dd3d26
--- /dev/null
+++ b/docs/html/guide/topics/wireless/wifip2p.jd
@@ -0,0 +1,611 @@
+page.title=Wi-Fi Direct
+
+@jd:body
+
+  <div id="qv-wrapper">
+    <div id="qv">
+      <h2>In this document</h2>
+
+      <ol>
+        <li><a href="#api">API Overview</a></li>
+        <li><a href="#creating-br">Creating a Broadcast Receiver for Wi-Fi Direct Intents</a></li>
+
+        <li>
+          <a href="#creating-app">Creating a Wi-Fi Direct Application</a>
+
+          <ol>
+            <li><a href="#setup">Initial setup</a></li>
+
+            <li><a href="#discovering">Discovering peers</a></li>
+
+            <li><a href="#connecting">Connecting to peers</a></li>
+
+            <li><a href="#transferring">Transferring data</a></li>
+          </ol>
+        </li>
+      </ol>
+      <h2>Related Samples</h2>
+      <ol>
+        <li><a href="{@docRoot}resources/samples/WiFiDirectDemo/index.html">Wi-Fi Direct Demo</a></li>
+      </ol>
+    </div>
+  </div>
+
+  <p>Wi-Fi Direct allows Android 4.0 (API level 14) or later devices with the appropriate hardware
+  to connect directly to each other via Wi-Fi without an intermediate access point.
+  Using these APIs, you can discover and connect to other devices when each device supports Wi-Fi Direct,
+  then communicate over a speedy connection across distances much longer than a Bluetooth connection.
+  This is useful for applications that share data among users, such as a multiplayer game or
+  a photo sharing application.</p>
+
+  <p>The Wi-Fi Direct APIs consist of the following main parts:</p>
+
+  <ul>
+    <li>Methods that allow you to discover, request, and connect to peers are defined
+    in the {@link android.net.wifi.p2p.WifiP2pManager} class.</li>
+
+    <li>Listeners that allow you to be notified of the success or failure of {@link
+    android.net.wifi.p2p.WifiP2pManager} method calls. When calling {@link
+    android.net.wifi.p2p.WifiP2pManager} methods, each method can receive a specific listener
+    passed in as a parameter.</li>
+
+    <li>Intents that notify you of specific events detected by the Wi-Fi Direct framework,
+    such as a dropped connection or a newly discovered peer.</li>
+  </ul>
+
+  <p>You often use these three main components of the APIs together. For example, you can
+  provide a {@link android.net.wifi.p2p.WifiP2pManager.ActionListener} to a call to {@link
+  android.net.wifi.p2p.WifiP2pManager#discoverPeers discoverPeers()}, so that you can be
+  notified with the {@link android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess
+  ActionListener.onSuccess()} and {@link android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure
+  ActionListener.onFailure()}
+  methods. A {@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent is
+  also broadcast if the {@link android.net.wifi.p2p.WifiP2pManager#discoverPeers discoverPeers()}
+  method discovers that the peers list has changed.</p>
+  
+  <h2 id="api">API Overview</h2>
+
+<p>The {@link android.net.wifi.p2p.WifiP2pManager} class provides methods to allow you to interact with
+  the Wi-Fi hardware on your device to do things like discover and connect to peers. The following actions
+  are available:</p>
+
+<p class="table-caption"><strong>Table 1.</strong>Wi-Fi Direct Methods</p>
+
+   <table>
+        <tr>
+          <th>Method</th>
+          <th>Description</th>
+        </tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#initialize initialize()}</td>
+	  <td>Registers the application with the Wi-Fi framework. This must be called before calling any other Wi-Fi Direct method.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#connect connect()}</td>
+	  <td>Starts a peer-to-peer connection with a device with the specified configuration.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#cancelConnect cancelConnect()}</td>
+	  <td>Cancels any ongoing peer-to-peer group negotiation.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#requestConnectionInfo requestConnectInfo()}</td>
+	  <td>Requests a device's connection information.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#createGroup createGroup()}</td>
+	  <td>Creates a peer-to-peer group with the current device as the group owner.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#removeGroup removeGroup()}</td>
+	  <td>Removes the current peer-to-peer group.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#requestGroupInfo requestGroupInfo()}</td>
+	  <td>Requests peer-to-peer group information.</td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager.PeerListListener#discoverPeers discoverPeers()}</td>
+	  <td>Initiates peer discovery </td>
+	</tr>
+
+	<tr>
+	  <td>{@link android.net.wifi.p2p.WifiP2pManager#requestPeers requestPeers()}</td>
+	  <td>Requests the current list of discovered peers.</td>
+	</tr>
+  </table>
+
+
+ <p>{@link android.net.wifi.p2p.WifiP2pManager} methods let you pass in a listener,
+  so that the Wi-Fi Direct framework can notify your
+  activity of the status of a call. The available listener interfaces and the
+  corresponding {@link android.net.wifi.p2p.WifiP2pManager} method calls that use the listeners
+  are described in the following table:</p>
+
+ <p class="table-caption"><strong>Table 2.</strong> Wi-Fi Direct Listeners</p>
+ 
+ <table>
+    <tr>
+      <th>Listener interface</th>
+      <th>Associated actions</th>
+    </tr>
+    <tr>
+    <td>{@link android.net.wifi.p2p.WifiP2pManager.ActionListener}</td>
+    <td>{@link android.net.wifi.p2p.WifiP2pManager#connect connect()}, {@link
+    android.net.wifi.p2p.WifiP2pManager#cancelConnect cancelConnect()}, {@link
+    android.net.wifi.p2p.WifiP2pManager#createGroup createGroup()}, {@link
+    android.net.wifi.p2p.WifiP2pManager#removeGroup removeGroup()}, and {@link
+    android.net.wifi.p2p.WifiP2pManager.PeerListListener#discoverPeers discoverPeers()}</td>
+    </tr>
+
+    <tr>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager.ChannelListener}</td>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager#initialize initialize()}</td>
+    </tr>
+
+    <tr>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener}</td>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager#requestConnectionInfo requestConnectInfo()}</td>
+    </tr>
+
+    <tr>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager.GroupInfoListener}</td>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager#requestGroupInfo requestGroupInfo()}</td>
+    </tr>
+
+    <tr>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager.PeerListListener}</td>
+      <td>{@link android.net.wifi.p2p.WifiP2pManager#requestPeers requestPeers()}</td>
+    </tr>
+  </table>
+
+<p>The Wi-Fi Direct APIs define intents that are broadcast when certain Wi-Fi Direct events happen,
+  such as when a new peer is discovered or when a device's Wi-Fi state changes. You can register
+  to receive these intents in your application by <a href="#creating-br">creating a broadcast
+  receiver</a> that handles these intents:</p>
+
+<p class="table-caption"><strong>Table 3.</strong> Wi-Fi Direct Intents</p>
+
+    <table>
+    <tr>
+      <th>Intent</th>
+      <th>Description</th>
+    </tr>
+      <tr>
+        <td>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_CONNECTION_CHANGED_ACTION}</td>
+        <td>Broadcast when the state of the device's Wi-Fi connection changes.</td>
+      </tr>
+      <tr>
+        <td>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION}</td>
+        <td>Broadcast when you call {@link
+    android.net.wifi.p2p.WifiP2pManager.PeerListListener#discoverPeers discoverPeers()}. You
+    usually want to call {@link android.net.wifi.p2p.WifiP2pManager.PeerListListener#requestPeers
+    requestPeers()} to get an updated list of peers if you handle this intent in your
+    application.</td>
+      </tr>
+      <tr>
+        <td>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_STATE_CHANGED_ACTION}</td>
+        <td>Broadcast when Wi-Fi Direct is enabled or disabled on the device.</td>
+      </tr>
+      <tr>
+        <td>{@link android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_THIS_DEVICE_CHANGED_ACTION}</td>
+        <td>Broadcast when a device's details have changed, such as the device's name.</td>
+      </tr>
+    </table>
+
+
+
+  <h2 id="creating-br">Creating a Broadcast Receiver for Wi-Fi Direct Intents</h2>
+
+  <p>A broadcast receiver allows you to receive intents broadcast by the Android system,
+  so that your application can respond to events that you are interested in. The basic steps
+  for creating a broadcast receiver to handle Wi-Fi Direct intents are as follows:</p>
+
+  <ol>
+    <li>Create a class that extends the {@link android.content.BroadcastReceiver} class. For the
+    class' constructor, you most likely want to have parameters for the {@link
+    android.net.wifi.p2p.WifiP2pManager}, {@link android.net.wifi.p2p.WifiP2pManager.Channel}, and
+    the activity that this broadcast receiver will be registered in. This allows the broadcast
+    receiver to send updates to the activity as well as have access to the Wi-Fi hardware and a
+    communication channel if needed.</li>
+
+    <li>In the broadcast receiver, check for the intents that you are interested in
+    <code>{@link android.content.BroadcastReceiver#onReceive onReceive()}</code>.
+    Carry out any necessary actions depending on the intent that is
+    received. For example, if the broadcast receiver receives a {@link
+    android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent, you can call the
+    {@link android.net.wifi.p2p.WifiP2pManager#requestPeers requestPeers()} method to get a list of
+    the currently discovered peers.</li>
+  </ol>
+
+  <p>The following code shows you how to create a typical broadcast receiver. The broadcast
+  receiver takes a {@link android.net.wifi.p2p.WifiP2pManager} object and an activity as
+  arguments and uses these two classes to appropriately carry out the needed actions when the
+  broadcast receiver receives an intent:</p>
+
+<pre>
+/**
+ * A BroadcastReceiver that notifies of important Wi-Fi p2p events.
+ */
+public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
+
+    private WifiP2pManager manager;
+    private Channel channel;
+    private MyWiFiActivity activity;
+
+    public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,
+            MyWifiActivity activity) {
+        super();
+        this.manager = manager;
+        this.channel = channel;
+        this.activity = activity;
+    }
+
+    &#064;Override
+    public void onReceive(Context context, Intent intent) {
+        String action = intent.getAction();
+
+        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
+            // Check to see if Wi-Fi is enabled and notify appropriate activity
+        } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
+            // Call WifiP2pManager.requestPeers() to get a list of current peers
+        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
+            // Respond to new connection or disconnections
+        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
+            // Respond to this device's wifi state changing
+        }
+    }
+}
+</pre>
+
+  <h2 id="creating-app">Creating a Wi-Fi Direct Application</h2>
+
+  <p>Creating a Wi-Fi Direct application involves creating and registering a
+  broadcast receiver for your application, discovering peers, connecting to a peer, and
+  transferring data to a peer. The following sections describe how to do this.</p>
+
+  <h3 id="setup">Initial setup</h3>
+  <p>Before using the Wi-Fi Direct APIs, you must ensure that your application can access
+  the hardware and that the device supports the Wi-Fi Direct protocol. If Wi-Fi Direct is supported,
+  you can obtain an instance of {@link android.net.wifi.p2p.WifiP2pManager}, create and register
+  your broadcast receiver, and begin using the Wi-Fi Direct APIs.</p>
+  <ol>
+    <li>
+      <p>Request permission to use the Wi-Fi hardware on the device and also declare
+      your application to have the correct minimum SDK version in the Android manifest:</p>
+      <pre>
+&lt;uses-sdk android:minSdkVersion="14" /&gt;
+&lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&gt;
+&lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&gt;
+&lt;uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /&gt;
+&lt;uses-permission android:name="android.permission.INTERNET" /&gt;
+&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
+</pre>
+    </li>
+
+    <li>Check to see if Wi-Fi Direct is on and supported. A good place to check this is in your
+    broadcast receiver when it receives the {@link
+    android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_STATE_CHANGED_ACTION} intent. Notify your
+    activity of the Wi-Fi Direct state and react accordingly:
+<pre>
+&#064;Override
+public void onReceive(Context context, Intent intent) {
+    ...
+    String action = intent.getAction();
+    if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
+        int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
+        if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
+            // Wifi Direct is enabled
+        } else {
+            // Wi-Fi Direct is not enabled
+        }
+    }
+    ...
+}
+</pre>
+    </li>
+
+    <li>In your activity's {@link android.app.Activity#onCreate onCreate()} method, obtain an instance of {@link
+    android.net.wifi.p2p.WifiP2pManager} and register your application with the Wi-Fi Direct
+    framework by calling {@link android.net.wifi.p2p.WifiP2pManager#initialize initialize()}. This
+    method returns a {@link android.net.wifi.p2p.WifiP2pManager.Channel}, which is used to connect
+    your application to the Wi-Fi Direct framework. You should also create an instance of your
+    broadcast receiver with the {@link
+    android.net.wifi.p2p.WifiP2pManager} and {@link android.net.wifi.p2p.WifiP2pManager.Channel}
+    objects along with a reference to your activity. This allows your broadcast receiver to notify
+    your activity of interesting events and update it accordingly. It also lets you manipulate the device's
+    Wi-Fi state if necessary:
+<pre>
+WifiP2pManager mManager;
+Channel mChannel;
+BroadcastReceiver mReceiver;
+...
+&#064;Override
+protected void onCreate(Bundle savedInstanceState){
+    ...
+    mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
+    mChannel = mManager.initialize(this, getMainLooper(), null);
+    Receiver = new WiFiDirectBroadcastReceiver(manager, channel, this);
+    ...
+}
+</pre>
+    </li>
+
+    <li>Create an intent filter and add the same intents that your
+    broadcast receiver checks for:
+      <pre>
+IntentFilter mIntentFilter;
+...
+&#064;Override
+protected void onCreate(Bundle savedInstanceState){
+    ...
+    mIntentFilter = new IntentFilter();
+    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
+    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
+    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
+    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
+    ...
+}
+</pre>
+    </li>
+
+    <li>Register the broadcast receiver in the {@link android.app.Activity#onResume()} method
+    of your activity and unregister it in the {@link android.app.Activity#onPause()} method of your activity:
+      <pre>
+/* register the broadcast receiver with the intent values to be matched */
+&#064;Override
+protected void onResume() {
+    super.onResume();
+    registerReceiver(receiver, intentFilter);
+}
+/* unregister the broadcast receiver */
+&#064;Override
+protected void onPause() {
+    super.onPause();
+    unregisterReceiver(receiver);
+}
+</pre>
+
+      <p>When you have obtained a {@link android.net.wifi.p2p.WifiP2pManager.Channel} and
+      set up a broadcast receiver, your application can make Wi-Fi Direct method calls and receive
+      Wi-Fi Direct intents.</p>
+    </li>
+
+    <p>You can now implement your application and use the Wi-Fi Direct features by calling the
+    methods in {@link android.net.wifi.p2p.WifiP2pManager}. The next sections describe how to do common actions
+    such as discovering and connecting to peers.</p>
+  </ol>
+
+  <h3 id="discovering">Discovering peers</h3>
+
+  <p>To discover peers that are available to connect to, call {@link
+  android.net.wifi.p2p.WifiP2pManager#discoverPeers discoverPeers()} to detect
+  available peers that are in range. The call to this function is asynchronous and a success or
+  failure is communicated to your application with {@link
+  android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} and {@link
+  android.net.wifi.p2p.WifiP2pManager.ActionListener#onFailure onFailure()} if you created a 
+  {@link android.net.wifi.p2p.WifiP2pManager.ActionListener}. The
+  {@link android.net.wifi.p2p.WifiP2pManager.ActionListener#onSuccess onSuccess()} method only notifies you
+  that the discovery process succeeded and does not provide any information about the actual peers
+  that it discovered, if any:</p>
+  <pre>
+manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
+    &#064;Override
+    public void onSuccess() {
+        ...
+    }
+
+    &#064;Override
+    public void onFailure(int reasonCode) {
+        ...
+    }
+});
+
+</pre>
+
+<p>If the discovery process succeeds and detects peers, the system broadcasts the {@link
+  android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent, which you can listen
+  for in a broadcast receiver to obtain a list of peers. When your application receives the {@link
+  android.net.wifi.p2p.WifiP2pManager#WIFI_P2P_PEERS_CHANGED_ACTION} intent, you can request a
+  list of the discovered peers with {@link
+  android.net.wifi.p2p.WifiP2pManager#requestPeers requestPeers()}. The following code shows how to set this up:</p>
+  <pre>
+PeerListListener myPeerListListener;
+...
+if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
+
+    // request available peers from the wifi p2p manager. This is an
+    // asynchronous call and the calling activity is notified with a
+    // callback on PeerListListener.onPeersAvailable()
+    if (manager != null) {
+        manager.requestPeers(channel, myPeerListListener);
+    }
+}
+</pre>
+
+  <p>The {@link android.net.wifi.p2p.WifiP2pManager#requestPeers requestPeers()} method is also
+  asynchronous and can notify your activity when a list of peers is available with {@link
+  android.net.wifi.p2p.WifiP2pManager.PeerListListener#onPeersAvailable onPeersAvailable()}, which is defined in the
+  the {@link android.net.wifi.p2p.WifiP2pManager.PeerListListener} interface. The {@link
+  android.net.wifi.p2p.WifiP2pManager.PeerListListener#onPeersAvailable onPeersAvailable()} method
+  provides you with an {@link android.net.wifi.p2p.WifiP2pDeviceList}, which you can iterate
+  through to find the peer that you want to connect to.</p>
+
+  <h3 id="connecting">Connecting to peers</h3>
+
+  <p>When you have figured out the device that you want to connect to after obtaining a list of
+  possible peers, call the {@link android.net.wifi.p2p.WifiP2pManager#connect connect()} method to
+  connect to the device. This method call requires a {@link android.net.wifi.p2p.WifiP2pConfig}
+  object that contains the information of the device to connect to.
+  You can be notified of a connection success or failure through the {@link
+  android.net.wifi.p2p.WifiP2pManager.ActionListener}. The following code
+  shows you how to create a connection to a desired device:</p>
+  <pre>
+//obtain a peer from the WifiP2pDeviceList
+WifiP2pDevice device;
+WifiP2pConfig config = new WifiP2pConfig();
+config.deviceAddress = device.deviceAddress;
+manager.connect(channel, config, new ActionListener() {
+
+    &#064;Override
+    public void onSuccess() {
+        //success logic
+    }
+
+    &#064;Override
+    public void onFailure(int reason) {
+        //failure logic
+    }
+});
+
+</pre>
+
+
+  <h3 id="transferring">Transferring data</h3>
+  <p>Once a connection is established, you can transfer data between the devices with
+  sockets. The basic steps of transferring data are as follows:</p>
+
+  <ol>
+    <li>Create a {@link java.net.ServerSocket}. This socket waits for a connection from a client on a specified
+    port and blocks until it happens, so do this in a background thread.</li>
+
+    <li>Create a client {@link java.net.Socket}. The client uses the IP address and port of
+    the server socket to connect to the server device.</li>
+
+    <li>Send data from the client to the server. When the client
+    socket successfully connects to the server socket, you can send data from the client to the server
+    with byte streams. </li>
+
+    <li>The server socket waits for a client connection (with the {@link java.net.ServerSocket#accept()} method). This
+    call blocks until a client connects, so call this is another thread. When a connection happens, the server device can receive
+    the data from the client. Carry out any actions with this data, such as saving it to a file
+    or presenting it to the user.</li>
+  </ol>
+
+  <p>The following example, modified from the <a href=
+  "{@docRoot}resources/samples/WifiDirectDemo/index.html">Wi-Fi Direct Demo</a> sample, shows you how
+  to create this client-server socket communication and transfer JPEG images from a client
+  to a server with a service. For a complete working example, compile and run the <a href=
+  "{@docRoot}resources/samples/WifiDirectDemo/index.html">Wi-Fi Direct Demo</a> sample.</p>
+<pre>
+public static class FileServerAsyncTask extends AsyncTask<Void, Void, String> {
+
+    private Context context;
+    private TextView statusText;
+
+    public FileServerAsyncTask(Context context, View statusText) {
+        this.context = context;
+        this.statusText = (TextView) statusText;
+    }
+
+    &#064;Override
+    protected String doInBackground(Void... params) {
+        try {
+
+            /**
+             * Create a server socket and wait for client connections. This
+             * call blocks until a connection is accepted from a client
+             */
+            ServerSocket serverSocket = new ServerSocket(8888);
+            Socket client = serverSocket.accept();
+
+            /**
+             * If this code is reached, a client has connected and transferred data
+             * Save the input stream from the client as a JPEG file
+             */
+            final File f = new File(Environment.getExternalStorageDirectory() + "/"
+                    + context.getPackageName() + "/wifip2pshared-" + System.currentTimeMillis()
+                    + ".jpg");
+
+            File dirs = new File(f.getParent());
+            if (!dirs.exists())
+                dirs.mkdirs();
+            f.createNewFile();
+            InputStream inputstream = client.getInputStream();
+            copyFile(inputstream, new FileOutputStream(f));
+            serverSocket.close();
+            return f.getAbsolutePath();
+        } catch (IOException e) {
+            Log.e(WiFiDirectActivity.TAG, e.getMessage());
+            return null;
+        }
+    }
+
+    /**
+     * Start activity that can handle the JPEG image
+     */
+    &#064;Override
+    protected void onPostExecute(String result) {
+        if (result != null) {
+            statusText.setText("File copied - " + result);
+            Intent intent = new Intent();
+            intent.setAction(android.content.Intent.ACTION_VIEW);
+            intent.setDataAndType(Uri.parse("file://" + result), "image/*");
+            context.startActivity(intent);
+        }
+    }
+}
+</pre>
+
+  <p>On the client, connect to the server socket with a client socket and transfer data. This example
+  transfers a JPEG file on the client device's file system.</p>
+
+<pre>
+Context context = this.getApplicationContext();
+String host;
+int port;
+int len;
+Socket socket = new Socket();
+byte buf[]  = new byte[1024];
+...
+try {
+    /**
+     * Create a client socket with the host,
+     * port, and timeout information.
+     */
+    socket.bind(null);
+    socket.connect((new InetSocketAddress(host, port)), 500);
+
+    /**
+     * Create a byte stream from a JPEG file and pipe it to the output stream
+     * of the socket. This data will be retrieved by the server device.
+     */
+    OutputStream outputStream = socket.getOutputStream();
+    ContentResolver cr = context.getContentResolver();
+    InputStream inputStream = null;
+    inputStream = cr.openInputStream(Uri.parse("path/to/picture.jpg"));
+    while ((len = inputStream.read(buf)) != -1) {
+        outputStream.write(buf, 0, len);
+    }
+    outputStream.close();
+    inputStream.close();
+} catch (FileNotFoundException e) {
+    //catch logic
+} catch (IOException e) {
+    //catch logic
+}
+
+/**
+ * Clean up any open sockets when done
+ * transferring or if an exception occurred.
+ */
+finally {
+    if (socket != null) {
+        if (socket.isConnected()) {
+            try {
+                socket.close();
+            } catch (IOException e) {
+                //catch logic
+            }
+        }
+    }
+}
+</pre>
diff --git a/docs/html/images/publishing/publishing_android_market.png b/docs/html/images/publishing/publishing_android_market.png
new file mode 100755
index 0000000..aa591ef
--- /dev/null
+++ b/docs/html/images/publishing/publishing_android_market.png
Binary files differ
diff --git a/docs/html/images/rs_compute.graffle b/docs/html/images/rs_compute.graffle
new file mode 100644
index 0000000..3fa8c67a
--- /dev/null
+++ b/docs/html/images/rs_compute.graffle
@@ -0,0 +1,2445 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>138.28.0.154505</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 733}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-09-19 10:15:24 -0700</string>
+	<key>Creator</key>
+	<string>Robert Ly</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{67.75, 299.343}, {157, 40.322}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>247</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.628571</string>
+						<key>g</key>
+						<string>0.768599</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.236788</string>
+						<key>g</key>
+						<string>0.532236</string>
+						<key>r</key>
+						<string>0.990271</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.131021</string>
+						<key>g</key>
+						<string>0.363196</string>
+						<key>r</key>
+						<string>0.725948</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript object}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{67.75, 231.343}, {157, 45.161}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>200</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.628571</string>
+						<key>g</key>
+						<string>0.768599</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.236788</string>
+						<key>g</key>
+						<string>0.532236</string>
+						<key>r</key>
+						<string>0.990271</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.131021</string>
+						<key>g</key>
+						<string>0.363196</string>
+						<key>r</key>
+						<string>0.725948</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript context}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>247</integer>
+				<key>Info</key>
+				<integer>6</integer>
+			</dict>
+			<key>ID</key>
+			<integer>246</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>40</real>
+			<key>Points</key>
+			<array>
+				<string>{146.25, 276.504}</string>
+				<string>{146.25, 299.343}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+				<key>Info</key>
+				<integer>5</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>251</integer>
+				<key>Info</key>
+				<integer>8</integer>
+			</dict>
+			<key>ID</key>
+			<integer>256</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>62</real>
+			<key>Points</key>
+			<array>
+				<string>{224.75, 319.504}</string>
+				<string>{339.25, 229.339}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>247</integer>
+				<key>Info</key>
+				<integer>7</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{51.25, 186.67}, {190, 175.33}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>235</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+Activity\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{26.5, 137.831}, {239.5, 238.669}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>233</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.938075</string>
+						<key>g</key>
+						<string>0.938269</string>
+						<key>r</key>
+						<string>0.938154</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.727869</string>
+						<key>g</key>
+						<string>0.728019</string>
+						<key>r</key>
+						<string>0.72793</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.472997</string>
+						<key>g</key>
+						<string>0.473094</string>
+						<key>r</key>
+						<string>0.473036</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+\
+\
+Android Framework\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Class</key>
+					<string>LineGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Font</key>
+						<string>DroidSans</string>
+						<key>Size</key>
+						<real>11</real>
+					</dict>
+					<key>Head</key>
+					<dict>
+						<key>ID</key>
+						<integer>250</integer>
+					</dict>
+					<key>ID</key>
+					<integer>249</integer>
+					<key>OrthogonalBarAutomatic</key>
+					<false/>
+					<key>OrthogonalBarPoint</key>
+					<string>{0, 0}</string>
+					<key>OrthogonalBarPosition</key>
+					<real>4.1290435791015625</real>
+					<key>Points</key>
+					<array>
+						<string>{434.25, 252.366}</string>
+						<string>{434.25, 281.285}</string>
+					</array>
+					<key>Style</key>
+					<dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.7</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>4</real>
+							<key>HeadArrow</key>
+							<string>FilledArrow</string>
+							<key>LineType</key>
+							<integer>2</integer>
+							<key>TailArrow</key>
+							<string>0</string>
+						</dict>
+					</dict>
+					<key>Tail</key>
+					<dict>
+						<key>ID</key>
+						<integer>251</integer>
+						<key>Info</key>
+						<integer>5</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{339.25, 281.285}, {190, 46.0537}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Helvetica-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>250</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.274119</string>
+								<key>g</key>
+								<string>0.950739</string>
+								<key>r</key>
+								<string>0.787494</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>0.223529</string>
+								<key>g</key>
+								<string>0.776471</string>
+								<key>r</key>
+								<string>0.643137</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.165602</string>
+								<key>g</key>
+								<string>0.586124</string>
+								<key>r</key>
+								<string>0.428309</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript Compute Engine}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{339.25, 206.312}, {190, 46.0537}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>DroidSans-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>251</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>1</string>
+								<key>g</key>
+								<string>0.874135</string>
+								<key>r</key>
+								<string>0.71718</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>1</string>
+								<key>g</key>
+								<string>0.662438</string>
+								<key>r</key>
+								<string>0.464468</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.93512</string>
+								<key>g</key>
+								<string>0.472602</string>
+								<key>r</key>
+								<string>0.333854</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Compute Renderscript (.rs)}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{314.5, 168.835}, {239.5, 175.33}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Helvetica-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>252</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.938075</string>
+								<key>g</key>
+								<string>0.938269</string>
+								<key>r</key>
+								<string>0.938154</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>0.727869</string>
+								<key>g</key>
+								<string>0.728019</string>
+								<key>r</key>
+								<string>0.72793</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.472997</string>
+								<key>g</key>
+								<string>0.473094</string>
+								<key>r</key>
+								<string>0.473036</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+\
+Renderscript Runtime\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>248</integer>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-11-07 11:10:03 -0800</string>
+	<key>Modifier</key>
+	<string>Robert Ly</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgWQCgRgDhg==</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	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
+	2EBBVT2xICYseVzSaKIjmIdcGBQiVcm8WAUKkSrqygws6JIFDgpmKOh6VyioPKCAM1mn
+	hJ4v86gi92jp1RHs3kqq9Z1CQYevUNDpOYOCzn8fMYMCs3ePoZzKH/3IZDX6SPPRZQnK
+	lBlWwNHDrfp/9ZXJKgG9SNaLjnFv/G8tDe63FcFgl0y7U2n4yqQLvSvA1YMKRKVcAUjt
+	2AV7z5ZdXALd0YdaY5cEvq30ndpcJrAyf8vtkFJRISUy+MnyqiYdJeZRxd6jwkRHsHvr
+	dtJgIhm+Qirr9KxriZEyn0RsQErfb9klYSOiD/XMLli1MWK/OsEuzj4hK+wCVh5ooZNL
+	ewm54CPmSXI59UVJlgqqqi25YAfsig0SVCVIwCa8I5c083FukAtXHmDJgQQcQxP9acNA
+	Al+BUCXG5EI3pXwgkmirPJDA169kIulUjyqikOI/l9jLT0hGRDp8RYJNz5Cg899HzJBg
+	IXveQWBk+YhbsNemXPEnKf/Hi1illL/LXeon+S2flzaXuntm+S+c9lyDCmVuZHN0cmVh
+	bQplbmRvYmoKNiAwIG9iagoyOTIyCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdl
+	IC9QYXJlbnQgNCAwIFIgL1Jlc291cmNlcyA3IDAgUiAvQ29udGVudHMgNSAwIFIgL01l
+	ZGlhQm94IFswIDAgNTc2IDczM10KPj4KZW5kb2JqCjcgMCBvYmoKPDwgL1Byb2NTZXQg
+	WyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL0NvbG9yU3BhY2Ug
+	PDwgL0NzMiAyMiAwIFIKL0NzMSA4IDAgUiA+PiAvRXh0R1N0YXRlIDw8IC9HczIgMzAg
+	MCBSIC9HczEgMzEgMCBSID4+IC9Gb250IDw8IC9GMS4wIDIzIDAgUgo+PiAvWE9iamVj
+	dCA8PCAvSW0xIDkgMCBSIC9JbTQgMTUgMCBSIC9JbTUgMTcgMCBSIC9JbTMgMTMgMCBS
+	IC9JbTIgMTEgMCBSCi9JbTYgMTkgMCBSID4+IC9TaGFkaW5nIDw8IC9TaDUgMjcgMCBS
+	IC9TaDYgMjggMCBSIC9TaDQgMjYgMCBSIC9TaDMgMjUgMCBSCi9TaDcgMjkgMCBSIC9T
+	aDIgMjQgMCBSIC9TaDEgMjEgMCBSID4+ID4+CmVuZG9iagoyNyAwIG9iago8PCAvQ29s
+	b3JTcGFjZSAzMiAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDk1LjUgLTg4LjE2
+	NSA5NS40OTk5OCA4OC4xNjUwNApdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5kIFsgZmFs
+	c2UgZmFsc2UgXSAvRnVuY3Rpb24gMzMgMCBSID4+CmVuZG9iagoyOCAwIG9iago8PCAv
+	Q29sb3JTcGFjZSAzMiAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDc5IC0yMy4w
+	ODA1MSA3OSAyMy4wODA1NCBdCi9Eb21haW4gWyAwIDEgXSAvRXh0ZW5kIFsgZmFsc2Ug
+	ZmFsc2UgXSAvRnVuY3Rpb24gMzQgMCBSID4+CmVuZG9iagoyNiAwIG9iago8PCAvQ29s
+	b3JTcGFjZSAzMiAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDEyMC4yNSAtMTE5
+	LjgzNDcgMTIwLjI1IDExOS44MzQ4Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQgWyBm
+	YWxzZSBmYWxzZSBdIC9GdW5jdGlvbiAzNSAwIFIgPj4KZW5kb2JqCjI1IDAgb2JqCjw8
+	IC9Db2xvclNwYWNlIDMyIDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgOTUuNSAt
+	MjMuNTI2ODUgOTUuNDk5OTggMjMuNTI2ODkKXSAvRG9tYWluIFsgMCAxIF0gL0V4dGVu
+	ZCBbIGZhbHNlIGZhbHNlIF0gL0Z1bmN0aW9uIDM2IDAgUiA+PgplbmRvYmoKMjkgMCBv
+	YmoKPDwgL0NvbG9yU3BhY2UgMzIgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA3
+	OSAtMjAuNjYxMDEgNzkgMjAuNjYxMDQgXQovRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBb
+	IGZhbHNlIGZhbHNlIF0gL0Z1bmN0aW9uIDM3IDAgUiA+PgplbmRvYmoKMjQgMCBvYmoK
+	PDwgL0NvbG9yU3BhY2UgMzIgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41
+	IC0yMy41MjY4NSA5NS40OTk5OCAyMy41MjY4OQpdIC9Eb21haW4gWyAwIDEgXSAvRXh0
+	ZW5kIFsgZmFsc2UgZmFsc2UgXSAvRnVuY3Rpb24gMzggMCBSID4+CmVuZG9iagoyMSAw
+	IG9iago8PCAvQ29sb3JTcGFjZSAzMiAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBb
+	IDEyMC4yNSAtODguMTY1IDEyMC4yNSA4OC4xNjUwNQpdIC9Eb21haW4gWyAwIDEgXSAv
+	RXh0ZW5kIFsgZmFsc2UgZmFsc2UgXSAvRnVuY3Rpb24gMzkgMCBSID4+CmVuZG9iago5
+	IDAgb2JqCjw8IC9MZW5ndGggMTAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9J
+	bWFnZSAvV2lkdGggNTAyIC9IZWlnaHQgNDkwIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xv
+	clNwYWNlIDQwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA0MSAwIFIgL0Jp
+	dHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt
+	0DEBAAAAwqD1T20Hb4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAgX9gQzkAAQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2Jq
+	CjMyNDEKZW5kb2JqCjE1IDAgb2JqCjw8IC9MZW5ndGggMTYgMCBSIC9UeXBlIC9YT2Jq
+	ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMzc0IC9JbnRlcnBv
+	bGF0ZQp0cnVlIC9Db2xvclNwYWNlIDQwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9T
+	TWFzayA0MyAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29k
+	ZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20Hb4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAgX9g4j4AAQplbmRzdHJlYW0KZW5kb2JqCjE2IDAgb2JqCjE5OTAKZW5kb2Jq
+	CjE3IDAgb2JqCjw8IC9MZW5ndGggMTggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBl
+	IC9JbWFnZSAvV2lkdGggMzM2IC9IZWlnaHQgMTEyIC9JbnRlcnBvbGF0ZQp0cnVlIC9D
+	b2xvclNwYWNlIDQwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA0NSAwIFIg
+	L0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAHt0DEBAAAAwqD1T20ND4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQOP
+	AwO5DwABCmVuZHN0cmVhbQplbmRvYmoKMTggMCBvYmoKNTE2CmVuZG9iagoxMyAwIG9i
+	ago8PCAvTGVuZ3RoIDE0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug
+	L1dpZHRoIDUwMiAvSGVpZ2h0IDYzMCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFj
+	ZSA0MCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNDcgMCBSIC9CaXRzUGVy
+	Q29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAA
+	AMKg9U9tCy+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAED74EBev4AAQplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjQx
+	NjEKZW5kb2JqCjExIDAgb2JqCjw8IC9MZW5ndGggMTIgMCBSIC9UeXBlIC9YT2JqZWN0
+	IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMTE0IC9JbnRlcnBvbGF0
+	ZQp0cnVlIC9Db2xvclNwYWNlIDQwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFz
+	ayA0OSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+
+	PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgw8D8wGSoAAQplbmRzdHJlYW0KZW5kb2JqCjEyIDAgb2JqCjYyMgpl
+	bmRvYmoKMTkgMCBvYmoKPDwgL0xlbmd0aCAyMCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1
+	YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzYgL0hlaWdodCAxMDQgL0ludGVycG9sYXRlCnRy
+	dWUgL0NvbG9yU3BhY2UgNDAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDUx
+	IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
+	cmVhbQp4Ae3QMQEAAADCoPVPbQlPiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwb+AwOZjwABCmVuZHN0cmVhbQplbmRvYmoKMjAgMCBv
+	YmoKNDgxCmVuZG9iago0MSAwIG9iago8PCAvTGVuZ3RoIDQyIDAgUiAvVHlwZSAvWE9i
+	amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDUwMiAvSGVpZ2h0IDQ5MCAvQ29sb3JT
+	cGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVu
+	dCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3YWVeTZx9GcTKTEGYZ
+	DVpBi1WDVZGiAhWlMs+Q0O//Rd7Qd7Wrwauetmu776P2f3btHw/aDgz4LGABC1jAAhaw
+	gAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtY
+	wAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUs
+	YAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIW
+	sIAFLGABC/xHCxR8uALf/lErFEvlcsUHK1AulYqFf5IvlMrVwcbQUNOHKjDUqNcq5exe
+	KJZrjeGxyXtT0z5SgampexOjzXqlFD73Hvrg8MRM6+GjpaXHPlCBpcVHD+anxoaqgb1Y
+	ro9OLzx+9vL1m9XVtz5MgdXVN6/aTxfnJ5u1r9gL5cGRmUfPXr/b/Lj9yYcqsP3rxtrL
+	Hxcmh6rFO3+lK1abUz+8WNva2Ts4PPKRChweHux++vB6+f54vdz/R3uhVB9v/fT2193j
+	s4uLSx+pwMXF+enhzoefl2aG73zshcrQ1OKrzd2Ty+tOp+sjFeh0Olfnh5/Xn7fG66W+
+	X/HF6sjs8tqno4tO9+bm5ncfqEAPtHt9trf186N7jf5f8cXa6P3n77+cXN2iqw4y703p
+	iXYuDrdXH083K31/sJcGx1vtjd2za8lZ4rdrbj/2y+PPaz/2/mDvV69PLKxs7ffUeaNd
+	9PtN9+p4Z3159mv1By+39s9VZ/6MdK9Ofnv3dG7kq2/9/+rM0d/9qm+rd777PswAf6n3
+	/d+5Un3ij29dddWZBb7HVX7rqv/5P+j8Dc/+WfBbZ/vmdarnLuyr6mzfvE713IV9VZ3t
+	m9epnruwr6qzffM61XMX9lV1tm9ep3ruwr6qzvbN61TPXdhX1dm+eZ3quQv7qjrbN69T
+	PXdhX1Vn++Z1qucu7KvqbN+8TvXchX1Vne2b16meu7CvqrN98zrVcxf2VXW2b16neu7C
+	vqrO9s3rVM9d2FfV2b55neq5C/uqOts3r1M9d2FfVWf75nWq5y7sq+ps37xO9dyFfVWd
+	7ZvXqZ67sK+qs33zOtVzF/ZVdbZvXqd67sK+qs72zetUz13YV9XZvnmd6rkL+6o62zev
+	Uz13YV9VZ/vmdarnLuyr6mzfvE713IV9VZ3tm9epnruwr6qzffM61XMX9lV1tm9ep3ru
+	wr6qzvbN61TPXdhX1dm+eZ3quQv7qjrbN69TPXdhX1Vn++Z1qucu7KvqbN+8TvXchX1V
+	ne2b16meu7CvqrN98zrVcxf2VXW2b16neu7CvqrO9s3rVM9d2FfV2b55neq5C/uqOts3
+	r1M9d2FfVWf75nWq5y7sq+ps37xO9dyFfVWd7ZvXqZ67sK+qs33zOtVzF/ZVdbZvXqd6
+	7sK+qs72zetUz13YV9XZvnmd6rkL+6o62zevUz13YV9VZ/vmdarnLuyr6mzfvE713IV9
+	VZ3tm9epnruwr6qzffM61XMX9lV1tm9ep3ruwr6qzvbN61TPXdhX1dm+eZ3quQv7qjrb
+	N69TPXdhX1Vn++Z1qucu7KvqbN+8TvXchX1Vne2b16meu7CvqrN98zrVcxf2VXW2b16n
+	eu7CvqrO9s3rVM9d2FfV2b55neq5C/uqOts3r1M9d2FfVWf75nWq5y7sq+ps37xO9dyF
+	fVWd7ZvXqZ67sK+qs33zOtVzF/ZVdbZvXqd67sK+qs72zetUz13YV9XZvnmd6rkL+6o6
+	2zevUz13YV9VZ/vmdarnLuyr6mzfvE713IV9VZ3tm9epnruwr6qzffM61XMX9lV1tm9e
+	p3ruwr6qzvbN61TPXdhX1dm+eZ3quQv7qjrbN69TPXdhX1Vn++Z1qucu7KvqbN+8TvXc
+	hX1Vne2b16meu7CvqrN98zrVcxf2VXW2b16neu7CvqrO9s3rVM9d2FfV2b55neq5C/uq
+	Ots3r1M9d2FfVWf75nWq5y7sq+ps37xO9dyFfVWd7ZvXqZ67sK+qs33zOtVzF/ZVdbZv
+	Xqd67sK+qs72zetUz13YV9XZvnmd6rkL+6o62zevUz13YV9VZ/vmdarnLuyr6mzfvE71
+	3IV9VZ3tm9epnruwr6qzffM61XMX9lV1tm9ep3ruwr6qzvbN61TPXdhX1dm+eZ3quQv7
+	qjrbN69TPXdhX1Vn++Z1qucu7KvqbN+8TvXchX1Vne2b16meu7CvqrN98zrVcxf2VXW2
+	b16neu7CvqrO9s3rVM9d2FfV2b55neq5C/uqOts3r1M9d2FfVWf75nWq5y7sq+ps37xO
+	9dyFfVWd7ZvXqZ67sK+qs33zOtVzF/ZVdbZvXqd67sK+qs72zetUz13YV9XZvnmd6rkL
+	+6o62zevUz13YV9VZ/vmdarnLuyr6mzfvE713IV9VZ3tm9epnruwr6qzffM61XMX9lV1
+	tm9ep3ruwr6qzvbN61TPXdhX1dm+eZ3quQv7qjrbN69TPXdhX1Vn++Z1qucu7KvqbN+8
+	TvXchX1Vne2b16meu7CvqrN98zrVcxf2VXW2b16neu7CvqrO9s3rVM9d2FfV2b55neq5
+	C/uqOts3r1M9d2FfVWf75nWq5y7sq+ps37xO9dyFfVWd7ZvXqZ67sK+qs33zOtVzF/ZV
+	dbZvXqd67sK+qs72zetUz13YV9XZvnmd6rkL+6o62zevUz13YV9VZ/vmdarnLuyr6mzf
+	vE713IV9VZ3tm9epnruwr6qzffM61XMX9lV1tm9ep3ruwr6qzvbN61TPXdhX1dm+eZ3q
+	uQv7qjrbN69TPXdhX1Vn++Z1qucu7KvqbN+8TvXchX1Vne2b16meu7CvqrN98zrVcxf2
+	VXW2b16neu7CvqrO9s3rVM9d2FfV2b55neq5C/uqOts3r1M9d2FfVWf75nWq5y7sq+ps
+	37xO9dyFfVWd7ZvXqZ67sK/fVr++Ya//Xtf9pV4Y+Nsr1ScerGztn6vO/Lm4VV9fnhup
+	3lEfX1jZ3Du7vrnxa+fB33Qvj3d+WZ4dvqM+ON56sbF7et2VHYjeUz/6vPZkZrjS960X
+	a6PzP7377fhKdSR65+Lg45ulqaE76tXhmSer2wfn113dWe69X97dztXJl42VhxONct+3
+	Xig3Jh+23+8cnV9e376OD1LgVvPq8nT/49un86O10t/+Bt/7x1JtZO7J642dg+PTs947
+	90EK9DBPT452t9fbP9wbqhT71YuVxkRr+dX7jztfdvf29n2YAnt7u18+b621l2ZHBkt9
+	v+AHBgqlanOy9aS9uv5hY3Nzy4cpsLm58X7t1bPFubH63U/9lr3WnJh7+Pjp8xft9ooP
+	U6DdfvFsebE1PdqoFO986r1f972vvTEyOT13v7XgIxVoteZnp8abvS/9a/Rb9kqt0RwZ
+	G/exCoyNjjTr1XJE77EXS+VqrTZY95EKDA7WqpV/Mv/j7/SFQrFY8rEKFIvFQvrl3v9f
+	cf6bBSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGAB
+	C1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCA
+	BSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jA
+	AhawgAUsYAELWMACFrCABSxggX+lwP8AyqUofgplbmRzdHJlYW0KZW5kb2JqCjQyIDAg
+	b2JqCjI3OTgKZW5kb2JqCjQzIDAgb2JqCjw8IC9MZW5ndGggNDQgMCBSIC9UeXBlIC9Y
+	T2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMzc0IC9Db2xv
+	clNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9u
+	ZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZdZW5NXAAbJHgiL
+	LIJsClKRugRL61aWShURUBAhBP//H2nwqRa0zlX93ovOueHihQzPDOdL6OvzaEADGtCA
+	BjSgAQ0UY6BULlc8hRool0ul78UtlSu1eqPZ7ynSQLNRq1b+vUmpUmu2hkZGxzwFGhi9
+	Njw40KiW/6VJuVJvjYxPzczN3/QUZ2B+dnpybKi/9u01KVUag+MzC3fuPWi3Vz1FGWg/
+	vL+yND91baD29S0pVeqDE/PL7cfPNza3PMUZ2Fx/unZ/aWa0l+Tq+3u51hqfX1lb397Z
+	fbPnKc7Am9evtp62f5oeaX713Ko0R6aX1zZ3Dg6P3h97ijPw/ujd3p/PHy5eH7x6SUrV
+	1vhCe33n7fFpp3PmKc5Ap3NytL/9ZGWmd0kuP7bK9aGpO4+394873e75+flHTzEGeq67
+	Z6dHuxvtW+MD1cufgMuNkZl7z3cOTy96WKSYHJ8oF0k+7L/4dan32LpcpNIcnXuwsXvU
+	8YYUWONzkpO3L5/cmRq6WqR/dL69+eZ9xwtSdJGP592Td6+e3r0xVL9yR/rHbra39o57
+	RQr/jf73wO7p4c6zu9PD3xRZtUjmj+OiyPOV7xQ5y/xO/2/qlyKX/2uv9J5aF3fEIoE/
+	DosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLS
+	EWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjq
+	CYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosE
+	pCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR
+	1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwW
+	CUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPS
+	IqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMY
+	LRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhH
+	pEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgn
+	MFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQ
+	jkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQ
+	T2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFok
+	IB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiL
+	oJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0
+	SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2R
+	FkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7A
+	aJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6
+	Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9
+	gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGA
+	dERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2C
+	egKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEi
+	AemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERa
+	BPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKj
+	RQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemI
+	tAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUE
+	RosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLS
+	EWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjq
+	CYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR1BMYLRKQjkiLoJ7AaJGAdERaBPUERosE
+	pCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwWCUhHpEVQT2C0SEA6Ii2CegKjRQLSEWkR
+	1BMYLRKQjkiLoJ7AaJGAdERaBPUERosEpCPSIqgnMFokIB2RFkE9gdEiAemItAjqCYwW
+	CUhHpEVQT2C0SEA6IrFIB3/U8YcY+FKk1PfPqfSP3Vzd2jvunP8Qpi9KBr5XZL69ufe+
+	c35uE7L3A7bz7um7V8/u3hiqX7kjzdG5hxu7Rxb5AcrxJXtXoHvy7uWT5amh2uUi5cbI
+	7L3fXx+ednvf4S1Bh//t2NN99uFg+7efJgevFqkP31h+8ufBh7OLJP8t01cDA70b0u0c
+	vdl8tDA+UL18R0q11sTio43XhyedM0+hBjqnxwcvn96bu9as/PNJq6+vVOm/Nrvy2x+7
+	b4+OP3iKNHB8uP9qfXVpcqhevlykr1wfnLh1//Hmy939/QNPcQb2915v//7L8uxo/5WH
+	1sUlaQxPLvy89mzjjxfbnuIMvNhaf9xenhtv1a5ekb6+crU5fH1u6eeHj9Z+9RRn4JfV
+	B3cXZ8Za9crl9/WL51epl2RwdHL25sLi7SVPQQZu3168NTc9MTLwbZBPSeoDQyNj4xPX
+	PYUZmJgYHx1uNWvf3JBP7/K9a1Jv9A+0PEUaGOhv1Crlrx9Znz92lcqVSrVarXkKMtCT
+	Xe3l+F6Pv7uUPEUa+Hwb/KoBDWhAAxrQgAY0UICBvwALpbhFCmVuZHN0cmVhbQplbmRv
+	YmoKNDQgMCBvYmoKMjQ0NwplbmRvYmoKNDUgMCBvYmoKPDwgL0xlbmd0aCA0NiAwIFIg
+	L1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzYgL0hlaWdodCAx
+	MTIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQ
+	ZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt3V1T
+	GgcYBWB2F1i+PxMVAtHGIFRlMzH1AwVHGxC1ClJAzP//I91l2gyLcLonN51pznulHg4X
+	z7w7yo1vKKSRgAQkIAEJSOD/LWCYpqUhBEzTMNathGFakagdi2uCC8TsSNhaLWpYkVgy
+	nc0XNIEF8rlMKmGHzRWiphVNZoub5Ur1vSaoQPVdaaOQjkder6hh2alieae2f+g4nzTB
+	BJzmQWO3uplLRJY31LCiqTfVPee41e5caoIKdC5Ojw52y3kX1P9byYwki9XG0cV1r397
+	pwkqcHvTvTx1PpaysaUn3oplS3tHnd4fg+HTSBNU4Gn4ePd7q/nL25R/QY1wsrjjXPQe
+	RpPp9FkTVGA6HQ/vr08aZXdBFx94M5rerB1f34+ms9nLy8s3TRABV2r2PBn22852MRFe
+	/JvJtLPl/VZvMPE05RkEc/4aD/TP+6svu+4Dv+hpxfKVw3Z/ONV2Brb8B3T88PWktpn2
+	e8bzVadz+zTVcnKe315m48fuaX0rHfXtZ7zw3rm8G7me5Pv99C+fTQa9s3op88rzkzx/
+	ZDk8z1Zjjefzj7zjz9357rn4Cclyn3dvP+VJL4c8aTJYkCfkoUN50mSwIE/IQ4fypMlg
+	QZ6Qhw7lSZPBgjwhDx3KkyaDBXlCHjqUJ00GC/KEPHQoT5oMFuQJeehQnjQZLMgT8tCh
+	PGkyWJAn5KFDedJksCBPyEOH8qTJYEGekIcO5UmTwYI8IQ8dypMmgwV5Qh46lCdNBgvy
+	hDx0KE+aDBbkCXnoUJ40GSzIE/LQoTxpMliQJ+ShQ3nSZLAgT8hDh/KkyWBBnpCHDuVJ
+	k8GCPCEPHcqTJoMFeUIeOpQnTQYL8oQ8dChPmgwW5Al56FCeNBksyBPy0KE8aTJYkCfk
+	oUN50mSwIE/IQ4fypMlgQZ6Qhw7lSZPBgjwhDx3KkyaDBXlCHjqUJ00GC/KEPHQoT5oM
+	FuQJeehQnjQZLMgT8tChPGkyWJAn5KFDedJksCBPyEOH8qTJYAF6TvXv/CHeivC75+r7
+	CCsa+hES8DzP6lvL9xF0vwOhrc/W3O/QfZn1ZChxD/asui/j3T/6tdV7nN8/Qn1lPgHv
+	/tFofv8o6bvXM7/P9Zvuc/mw/vUb97iRe59rcOPe5yr473MZ4URxu3nefRiNpxpCYDIe
+	3l0d18tZ23c/LmTZmVLtqN29fxw+aQILDAcP/euz5s6bpP++YciMJAqV+ufzq+5N/1YT
+	VKDf+9o5ae5uZZbvb3r3YYuVWvPL2UW7owkq0D4/+bz/oZSLL61nKOTdLy6Utj82Dg6b
+	mqACh/t7Hyob2df3iz3QaCJT2Ci9q1Q1AQUqlfLW23zK3c7FD5t/HzZ177/biVQml9cE
+	FshlM8l4dOX9d3dDTSscse1YXBNQIBazo5E1mvMtNQzTNC1NUAFXy1jxqC+eMtbXEpCA
+	BCQggf9A4C9bXHKRCmVuZHN0cmVhbQplbmRvYmoKNDYgMCBvYmoKMTA4OQplbmRvYmoK
+	NDcgMCBvYmoKPDwgL0xlbmd0aCA0OCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUg
+	L0ltYWdlIC9XaWR0aCA1MDIgL0hlaWdodCA2MzAgL0NvbG9yU3BhY2UKL0RldmljZUdy
+	YXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9G
+	bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt11lzlAUeRvF0OitZgICBgEQWDYuyCLILyC5b
+	IJAQ5vt/kek4o2VAjlUzVxzPe+PFX6vynF/eTjs21lOBClSgAhWoQAUqUIEKVKACFahA
+	BSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSg
+	AhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQ
+	gQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWo
+	QAUqUIEKVKACFahABSpQgf+hwGAwGO+RFRihwq/CYHw4MTk1Nd2jKjA1NTkxHP8M/GB8
+	Ymp2bn5hcW+PqcDi4sL8nunJ4V+yD4aTs/P7Di4fXlk50iMqsLJy6KulvXPTE3/xug+G
+	U3v2LR898e3ps2fP9XgKnD17Zu3U6sqBhZmJ8U/+uo9Pzi0dOXnu0k/Xb97qURW4ee3K
+	+bXV5cWZiY8/5AcTs/uPfHfh+p37jx4/6TEVePz44S+3r3x/fHlh+uO/7cPphUOnLt58
+	8PTFq/X11z2eAuvr6y+fP7579dzqgbnJ3S/7YGLP0uoPNx48f/12c/Rs9WgKjDjfbbx6
+	evfK2sri9O6/7IPJ+eVvr9x79mbz/fbo+dCjKbDj+f7dq8e3zq8uzU7s+j43Pr24cubG
+	o1fvdsT/1WMqMPr93d7aeHbv8smDc7u/z43P7Dv6/e2nr7e2MzeJ72zZ+dR6/+7lg6vf
+	Lc/v/sM+nN1/7PydX99s9abb0H9z33736tH1tUMLU7u+zg1nl1Yv3H22sdWr7lTfXH90
+	4/ThxU/VL6YuFP/PpO3N9cc3z6x8Rv29dvc/e1jq/0T/P9R3/Q/7zt/1nU/43nXn70Tq
+	TldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69K
+	nfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX
+	1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTlde
+	lTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4
+	r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2u
+	vCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3
+	cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7
+	XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp1
+	7uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5T
+	d7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV
+	6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8
+	pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ry
+	qtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzH
+	eU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu50
+	5VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5
+	j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d
+	6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWp
+	cx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/Oa
+	utOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqr
+	Uuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/n
+	NXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOV
+	V6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+
+	zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWn
+	K69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XO
+	fZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvq
+	TldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69K
+	nfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX
+	1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTlde
+	lTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4
+	r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2u
+	vCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3
+	cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7
+	XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp1
+	7uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5T
+	d7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV
+	6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8
+	pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ry
+	qtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzH
+	eU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu50
+	5VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5
+	j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d
+	6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvIrVt/g/7vqFFvhD
+	fTD2p2c4u7R68e6zja0PX+isfmws8Fn1YxfuPHuz9eFD7tjvizx+2N589ejG6cMLU7vf
+	9Zn9X5//+WnqXyTq3/zQozd5+92rh9fWDi1M7lIfn9579NytJ+ub26N/pbf9bzJ+YeeR
+	6Pu3L+7/9O3y/EfqU4uH1649ePn2/Q77F7aqHxcLjN707a03v965dPzAnold7/pgcu7g
+	iUs/P1l/t/W+x1Zga3PjxcPr577eNzP80zf4sbHBcHbf0TNX7z19+XrjbY+swMb680e3
+	L51aXpga36U+Nj41f/Cb76/eefT0+YseV4Hnz57cv/Xj2tH9s7s/4Hde9unF5eNnL9/4
+	+d790fOgR1JghPnL3dvXLqx9fWDu41d9bGx8Ymbxq2Onzl748fKVHlWByxd/OH3iyNL8
+	1HDXd7mdD/vBiH1+afno6vGTJ0/1iAqcPPHNsZWDe+f+Av039qk9C3uXDhz8qkdV4OCB
+	/YtzM5Ofvum/fbUbve5TM7N75npkBfbMTk8Oxz/5eP/9+/xgfDicmJiY7BEVGIGOyD9r
+	/l/7QY+swO8vdf+sQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEK
+	VKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAF
+	KlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKAC
+	FahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAL/X4F/A+4p
+	3x8KZW5kc3RyZWFtCmVuZG9iago0OCAwIG9iagozNDQ5CmVuZG9iago0OSAwIG9iago8
+	PCAvTGVuZ3RoIDUwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp
+	ZHRoIDQwMiAvSGVpZ2h0IDExNCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw
+	b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
+	ID4+CnN0cmVhbQp4Ae2dW1PaXBSGyRkIBAELQgVrKQdFY0c/5SRaFTxQASkJof//jzRo
+	2yEq64695pu+60Iv3oGXeR52tl6tUAgDAiAAAiAAAiAAAiAghoAkywpGKAFZlqRVciVZ
+	0XQjHMGIJBA2NFV534mkaGEznkimMAIJJDesWNRQ5XecyIpuJtLZ/HahiBFHoPAxl0nF
+	I9rbYyIpRiyd/1TeP7DtI4woAvZhvVYqZDei2utTIil6bLNQsU9b590LjDgC3U7juF7K
+	J30lwftd1sx0oXbcuerf3T9gxBG4v+1dNOwvuUT41XNLCSdyleNu//to/DTBiCPwNB4+
+	XLcOdz/EgodEUs30J7vTf5w4rjvDiCPgutPx4OqslvcPyfJjS9bj2fLp1WDiet58Pv+J
+	EUPAZ+3NnPHdub2TjqrLfwHLRiK/3+qPnIUPGBGj47lloeTH4NtJyX9sLRtRwsntg/O7
+	sYsTItDGHyXTx5uzcjYeNBJJFuzu/ZOLAyLayM+5Nx32GtWtuB44I5FU0b54mPhGhH+i
+	f77Qc0b9ZjVnvTFyBCM8X46FkVZthZEZz2f6t1v/Gln+r13xn1qLMwIjDF8OGGGATlbC
+	CImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhk
+	JYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGA
+	TlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQR
+	BuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhC
+	GGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImH
+	IYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQ
+	eBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbCCImHIYQRBuhkJYyQeBhCGGGATlbC
+	CImHIYQRBuhk5V8jr7e4vuwMJV+LcB0EVhp52au7jkq8J0HAXwfujHrN6tbrvbrJwuHL
+	7mnixYjWQMA3stg9XckGd0/L4Y3teud5P/saSvGWKwn429fns+nj9Wk5EwvsZ5cNK7fX
+	7A2nnod94CvxrSHwhXjuZHB5/HnTVJdvdkmLZb6cXD48ObOFE4woAp7nzabDfvuwmIqo
+	oaWR1GiqeNC8GYx/OI6LEUbAcaaT0d3FSSVnGcvLwEMhxbCypaP29f334WiMEUZgNBoO
+	bi/P6sW0GbhGQiFJjSQ/lo8a3ete/xYjjkD/5lvnv/puJm4oy9eIb0TWzFT+8/7X02a7
+	3cEIItButxondnUnY4UD9/riQpEUPbqR2d4tV/f2McII7NUqpZ38pi8keIu8KNEi8eRm
+	ZiuXx4gjkMt+SCdMQ5WDz6znv7okWdUjZsyyEhhxBKx4LGpoytsT8tuJomq6gRFIQNc1
+	VXnvgDwb8X9IkowRSkCS3nle/dGB3yAAAiAAAiAAAv93Ar8AcG6kVAplbmRzdHJlYW0K
+	ZW5kb2JqCjUwIDAgb2JqCjEyMDIKZW5kb2JqCjUxIDAgb2JqCjw8IC9MZW5ndGggNTIg
+	MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzM2IC9IZWln
+	aHQgMTA0IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9C
+	aXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB
+	7d1ZV9pQFAVgkkAghEEGURAqlIpUJSqtI0OLiggoiBKg//+P9GJXESKcdY+Pus+Tstk8
+	fOtmOTyc63JhIAABCEAAAhD42AKKqmoYhoCqKsqqI6Gomkf3+gyMvIDP63Fry0UVzeMz
+	g+FIFCMtEFkLBfxet7pEVNV0MxzbSKUzXzCyApmtZCIaNDxvj6iieQOxVHZn78CyDjFy
+	AlZpv5jPbKz5Pc4Tqmh6IJ4pWCcX1VodIytQq5yV9/OpiABd/KmkesxYpliuNJqtuzZG
+	VuDu9qZ+Zn1Lhn2OJ17zhZOFcq3Z7fUfBxhZgcf+Q/vqopRbDyweUMVtxrJWpXk/GNr2
+	CCMrYNvP/U7jtJgSB3T+gVf14MbOSaMzsMfjyWTyByMjIKTGo2G/VbW2Y373/O9Mqjec
+	2rto9oZTTXjKYL68Zwr61Pn9Iy8e+HlPzRdJH1RbfRunU9ryP+jz/fXpzkZw0dOIZKza
+	3aONw8nz/DMZPz/cnO1uBvWF82lEv1j19kB4Mj/v0799POw1z3eToTeeh/B8z+GYel4U
+	V3iO3vOJn7sz85z/C0kTz/v0fMKTfTjgySYjC/AkedghPNlkZAGeJA87hCebjCzAk+Rh
+	h/Bkk5EFeJI87BCebDKyAE+Shx3Ck01GFuBJ8rBDeLLJyAI8SR52CE82GVmAJ8nDDuHJ
+	JiML8CR52CE82WRkAZ4kDzuEJ5uMLMCT5GGH8GSTkQV4kjzsEJ5sMrIAT5KHHcKTTUYW
+	4EnysEN4ssnIAjxJHnYITzYZWYAnycMO4ckmIwvwJHnYITzZZGQBniQPO4Qnm4wswJPk
+	YYfwZJORBXiSPOwQnmwysgBPkocdwpNNRhbgSfKwQ3iyycgCPEkedghPNhlZgCfJww7h
+	ySYjC/AkedghPNlkZAGeJA87hCebjCzAk+Rhh/Bkk5EFeJI87BCebDKyAE+Shx3Ck01G
+	FkhPm6wiXCIw83Tu//y3r3JJAy9RAqs8xX7aNvbTUnJLs8l4+HBz/mY/rdifXJruT8a+
+	36Vqq14UXGLf7/VpwbE/Wez33tq7/L/fe1UbrzsFhOfoqdv4+S2xuN9b1UObhdOr7tMI
+	C76dZsT34nSO7f5d7Sjr2D+veMx47qh623vG7QiydyO8vM8eDrpXZ3vptcX7ERTNWNsq
+	/qy37vuDJ4y0wGDQ69xUDvOJoD6/PtnlUsV1Pdv7J7XrVrvTxcgKdNq3jcvjwlbEWLhu
+	wuUS10mFEtnvx+fVX78bGFmBX/XKibWTjpmL18uIq1FUty+0ns5/Lx2Vyz8wcgLl48OD
+	3VwyauqO64/EARWggUgilcnmvmJkBXLb6WQ87H/L+QKqG4FwNBaPr2PkBOLxWCRk+pZc
+	xze9DEkcUd1r+E2MvIDf8Ho052V8s5ulxI2mmhvDERCY8/9YmlG+fqFgpAVe1fAVBCAA
+	AQhAAAIfV+AvZD1MOQplbmRzdHJlYW0KZW5kb2JqCjUyIDAgb2JqCjEwODYKZW5kb2Jq
+	CjMwIDAgb2JqCjw8IC9UeXBlIC9FeHRHU3RhdGUgL2NhIDAuNyA+PgplbmRvYmoKMzEg
+	MCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvQ0EgMC43ID4+CmVuZG9iago1MyAwIG9i
+	ago8PCAvTGVuZ3RoIDU0IDAgUiAvTiAxIC9BbHRlcm5hdGUgL0RldmljZUdyYXkgL0Zp
+	bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhVJPSBRRHP7NNhKEiEGFeIh3CgmV
+	KaysoNp2dVmVbVuV0qIYZ9+6o7Mz05vZNcWTBF2iPHUPomN07NChm5eiwKxL1yCpIAg8
+	dej7zezqKIRveTvf+/39ft97RG2dpu87KUFUc0OVK6Wnbk5Ni4MfKUUd1E5YphX46WJx
+	jLHruZK/u9fWZ9LYst7HtXb79j21lWVgIeottrcQ+iGRZgAfmZ8oZYCzwB2Wr9g+ATxY
+	Dqwa8COiAw+auTDT0Zx0pbItkVPmoigqr2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzU
+	tPdEobwPrkQZz19U9mw1FKcN45xIQxop8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtd
+	upPj+PYQpT7JYKiJtemymR2FfQB2KsvsEPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f
+	9heuU+B7hD014M4UrsXx2oofXi0BQ/dUI2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoT
+	N4A7YR9ZqmYKsV37ruol7nsCd9PjO9GbOQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXg
+	d6iYwBy5idzNKPce1REbZ6NSgVZ6jVfGT+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5
+	jXrcOa69nRtVYVZxZQvd/8cyhI/ZJzmmwdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV
+	7u24RRLMUD4sbCW6S1RuKdTqPYNKrBwr2AB2cJLELFocuFNrujl4d9giem35TVey64b+
+	+vZ6+9ryHm3KqCkoE82zRGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0
+	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
+	Jr8Ivy1/Mn8j/ysBKgFlAS+BAoEegRVBHsEDgvGC9YLPhSiFlIV8hIqE7gutCYsI2wsf
+	E24RXhBhFTESiRWpF3kpShDVFA0RrRR9IoYVUxbzEzsrNiwOiyuI+4iXij+WgCUUJcgS
+	ZyVG9mD2qOwJ3FO5Z1KSWlJbMlKyXnJmL/Ne073Je1v2fpQSlHKUypO6L7UtrSDtL10t
+	/UKGQcZYJlmmXeazrLgsSbZU9okcQc5ALkmuVW5VXkLeU75c/qkCUeGAwjGFHoWfikqK
+	oYpXFBeVBJVclcqUJpUZlS2Us5UfqGBUdFSSVDpUNlQVVcNVm1U/qUmq+aldUlvYJ7LP
+	c1/1vjl1fnU39fPq0xq8Gq4a5zSmNfk03TQrNWe1BLQ8tGq03mmLaftqX9b+qCOtE6pz
+	Q2dNV1U3QbdbD6VnqJepN6TPoG+rX6I/ZcBv4G1Qb7BiqGAYZ9i9H7PfZH/e/kkjLiOS
+	UZ3RirGScYJxnwm1ibVJicmsqbhpqGn7AfiA8YFTB16aCZkFmrWYA3Mj81PmryxELEIs
+	blliLS0sSy3fWslYxVvdtyZau1hfsv5uo2OTa/PCVtQ2wrbHjtbOya7Obs1ezz7ffvqg
+	1MGEgwMO7A5kh1ZHnKOdY43jt0P6h04fmndScEp3mjgscjj68ENndmd/504XWhc3l2uu
+	GFd710uuW27mbpVu39yN3MvcV0i6pCLSkoeWR4HHoqe6Z77nOy91r3yvBW9171Peiz6a
+	PoU+y2Rdcgl51Xe/b4Xvmp+530W/HX97/8YAigDXgLZAhkC/wL4g7qDooJFgieD04OkQ
+	1ZDTISuhJqE1YVDY4bDWcEbk5XAwQjQiLWImUiOyNHI9yi7qWjR9dGD0YIx4TEbMu1iD
+	2Atx6DhSXE88X/zR+JkE7YTziVCie2JPkkBSatL8EcMjtUepjvodfZQsnZyf/DXFPqU9
+	lSv1SOpcmmFafTpNemj65DG1YxXH0cfJx4cy5DLOZGxnemT2Z0lnFWZtZZOy+0/InCg+
+	sZPjlTOUq5hbfhJ7MvDkRJ5mXm0+fX5s/typA6duFvAWZBZ8Pe1y+mGhfGFFEVVRRNF0
+	sWlx6xnBMyfPbJX4lIyX6pQ2lnGWZZStnfU4O1quVX6lgqsiq+LHOfK5p+cNz9+sFK4s
+	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
+	G9/mvj9cy1/ft/52I3Vj40fgj7nNg5u3txi3yFtdPxl/kn92bVNsW2wXb7/eEdkJ2mnZ
+	zX+Yl5zs7u4BIGodhH6c2tn5IgwALh+An3k7O5uVOzs/q5BiA/kG0u3/+3vFrjEW4dzL
+	bu2i/3T8D+gdk/4KZW5kc3RyZWFtCmVuZG9iago1NiAwIG9iago1OTUzCmVuZG9iago0
+	MCAwIG9iagpbIC9JQ0NCYXNlZCA1NSAwIFIgXQplbmRvYmoKNTcgMCBvYmoKPDwgL0xl
+	bmd0aCA1OCAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxh
+	dGVEZWNvZGUgPj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0R
+	YmsM2x+2RZBkM0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1u
+	TLal6sDOfvPeN+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGD
+	c/l759h6D4FbVsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLs
+	jzlOeXjBtQ8rPcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cm
+	u8zuq2KhnE72DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbca
+	qfg1whRfEE0nolRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHh
+	eY8TZ97U3e9F2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3Ri
+	RLFBezbcPbdRpN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe
+	19PI43NNXnyV1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuE
+	dVoxN9+fbH87PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK
+	5yGJl8Uu8ZLYS6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/
+	wipkNJ25Dm/6j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8
+	BFg8qxatUjWfILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi
+	6XbYmdMdbhyhOUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVh
+	bQplbmRvYmoKNTggMCBvYmoKNzM3CmVuZG9iagozMiAwIG9iagpbIC9JQ0NCYXNlZCA1
+	NyAwIFIgXQplbmRvYmoKNTkgMCBvYmoKPDwgL0xlbmd0aCA2MCAwIFIgL04gMyAvQWx0
+	ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB
+	hVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBkM0nWbjbr7ia1pYjk
+	4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPeN+99b3bfAA1y0jT1
+	gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4FbVsN7+3eyd62a0raa
+	B4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8rPcRZInxANS3Of024
+	U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72DpC9nfR+TrPePsIh
+	wgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0nolRx2S4N8Ziu/Vby
+	SoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F2gKvMA4dDBoMmg1I
+	UBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdRpN08/igicZRDtQiS
+	/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV1HaTV0eWrHl6vJrs
+	Gj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87PeIuzy611nOtiYs3
+	VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLYS6sL4mBtxwidlYYp
+	0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6j9vH/Bfk94rnnygC
+	L2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWfILwBHHaHeh7oKZjT
+	lpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyhOUL3xKdKZZP6r/ER
+	sP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoKNjAgMCBvYmoKNzM3
+	CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDU5IDAgUiBdCmVuZG9iago0IDAgb2Jq
+	Cjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAv
+	S2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjYxIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9n
+	IC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24gLzEuNCA+PgplbmRv
+	YmoKMzkgMCBvYmoKPDwgL0xlbmd0aCA2MiAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAg
+	MTM2NCBdIC9GdW5jdGlvblR5cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAw
+	IDEgMCAxIDAgMSBdIC9Eb21haW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBd
+	IC9TaXplIFsgMTM2NQpdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Aa3B
+	BwKBAABA0ftfSTRUtDWMFu00dQV34L+3bT/6bB/OylmWdaHMy8yZpnmijNPIGUDv4c3p
+	QV3fUdqu5TRN21DqpuZUVV1RyqrkFKBX8eI8Qfkzp2R5xknTLKUkacKJ4ySmPOIH5w66
+	3W+cKyi6RpQwCjlBEAYUP/A5F5B38TguyHEdjg2ybItiWibIMA3K2ThzTiD9pHM0kKqp
+	nCNIOSoUWZFBkixRREnkHED7w54jgHbC7n9fqv5GzAplbmRzdHJlYW0KZW5kb2JqCjYy
+	IDAgb2JqCjE4OAplbmRvYmoKMzggMCBvYmoKPDwgL0xlbmd0aCA2MyAwIFIgL09yZGVy
+	IDEgL0VuY29kZSBbIDAgMTM2NCBdIC9GdW5jdGlvblR5cGUgMCAvQml0c1BlclNhbXBs
+	ZQo4IC9EZWNvZGUgWyAwIDEgMCAxIDAgMSBdIC9Eb21haW4gWyAwIDEgXSAvUmFuZ2Ug
+	WyAwIDEgMCAxIDAgMSBdIC9TaXplIFsgMTM2NQpdIC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
+	ID4+CnN0cmVhbQp4AaXChVJCUQBAwb+2u7u7sekGFQMDW7ED61OOMTL48MWNnU1+kLSY
+	+OD7u+L4O8XfiAuPvWH3lZjt6CsSX4gaR15QnCOSI6w9lCP0rD74jOETQZmBJ+w+ErDt
+	f0T0A/5/fQ+ovMf303uPZs8dOt13GN7ilrl6i+UbVp2u3CD0mhWzy9dIv2I5f+kKzYtZ
+	dC5kKbxkQfL8JeYvmBfoukDoOS6zc+dIP2Muf/YMrafM6J0+5fcJ0/KnTjB/zJTAyWOc
+	HzFpceIIuYdM/Dl+iPoM4xnG9I5m+H3AqPyRA0zuMyJ2eB+HewxbH9pD4i5DxoO7qE8z
+	mGZAb3+a7zuK+3Yovk2f8N5tHG7Ra71nC4mb9Bh3b6I4RffPrhQ6O1N0bqjv2KD4Oh3C
+	29exu0a77bY1RCdp+7c1icoErfktCXQ2J2iOq2+KYxijSWZjDMtRGp02RBEaocFsfQSV
+	Yerz68LorA2hsyZEYZAaydVBLAeodloVQKifKrOVfqT7qPyzwod6L+V6y7wUeiiTXOrB
+	vJtSgSVuvn4CXuWIVQplbmRzdHJlYW0KZW5kb2JqCjYzIDAgb2JqCjQxMAplbmRvYmoK
+	MzcgMCBvYmoKPDwgL0xlbmd0aCA2NCAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAgMTM2
+	NCBdIC9GdW5jdGlvblR5cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAwIDEg
+	MCAxIDAgMSBdIC9Eb21haW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBdIC9T
+	aXplIFsgMTM2NQpdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AY3CCTdU
+	cRgH4C8mEolEIpGSkpKSEolEIhljxqxmDGNm7Pu+71tf6/29neuY073jf+99n/Pw3wTb
+	jPOlcIwvTV7E2HCMLySjfKF7HmXTo3wuOcJnwhE+M3kaYcNhPpUM86nuSZhNh/hE8DjE
+	x0OyQT42eRRkwwAfCfv5KPnQz6Z9fCh44OMDr7iHD1T3PWw4yPvCbt5P3nOzVRfvXcee
+	S33Xhd0BcSd2VXecSN2PHUkHdq5uO2CzD9t2t/qg/SPbiy3VzV6k/o1N4R5s9mDDdjc2
+	7K53Q/tLtgvrqmtdSP0Ta8KdWOvEqu0OrNpd6YD2h3g7Vm5cbkfq71gWbsNyG5YkW7Fk
+	ebEV2m/iLVg0XmiB+lcsSDZjoRnzkk2YtzzXhOtfMCfZiDnj2Uaof8as8CfMSDZgxvJ0
+	A65/xLRwPaZ1p+qh/gFTwu8xKVmHSfMTdfj/HSaEazGhO14L9bcYF36DhHANEoqUqKG4
+	/muKC1dTXDdWTaZfUUzyJY0JV9GYyWgVGb6gqGQlRXVHK8n0cxqVHXlGohU0YjJSQYZP
+	KSJcTpHk4XIyXUbDguEyCj8RL6WwaqiUDB9TSLiEQslDJWS1mIbsBosp+Ei8iIKqgSIy
+	fEgB4UIKJPsLyWoB+e36Csj3QDyffKrefEp9n7ySeeS96skjm7nksTuYS9p7sjk0qOrO
+	odR3yS2cTe5sctnOIpfdgSzS3hHPpIEbnZmU+jY5hTPImUH9kunUb9mRTtpb4mnkSPsH
+	inMKnAplbmRzdHJlYW0KZW5kb2JqCjY0IDAgb2JqCjU3MgplbmRvYmoKMzYgMCBvYmoK
+	PDwgL0xlbmd0aCA2NSAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAgMTM2NCBdIC9GdW5j
+	dGlvblR5cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAwIDEgMCAxIDAgMSBd
+	IC9Eb21haW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBdIC9TaXplIFsgMTM2
+	NQpdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AbXCiVYBUQAA0O8y++pL
+	s0WWyCCSdQahlMqSLUspwhd06uQ4ozHmzbx3zy1t7KVjlY0d+NquGC0qa1V5LR65EmV4
+	iytR9UssIroUi0uxALlQWP5eCAWt+YUA4aeQNzb3KYD9EHIWZj8EvXMhq5fPzsFm5vzu
+	O59B943PvPHXKM7468PTM95wLj37d8qlQV5NOYAT7sra1ITTPuZSCCbH3M9XzWzyFcYR
+	m9y+HLEwD9lL3Ykha/6ATQCOD9htJj7Q3Wfilsf6jMYeE0NT6jHSC8pdRvpLS106CneH
+	juq+6NAmt+kL8JE2bWiLjgCnIq394Ral8ZkKo3n+RCH8SJ2rhx4paJtk6NhgkzTzgQya
+	Gnggj78nA5D678n9DdJvKOFvAD+7I1C9Jc60+m4JCOuEz1hvnTAW99a3a7jX7NMarreK
+	n0LtqeK7N7gH3QruqeDugzF3xewy5j7QVcasLmEuw50lDKyCOS10KNi2zaGoyzYH7Cey
+	7W/RdgLyGwqvtaMKZW5kc3RyZWFtCmVuZG9iago2NSAwIG9iagozODQKZW5kb2JqCjM1
+	IDAgb2JqCjw8IC9MZW5ndGggNjYgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQg
+	XSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAg
+	MSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6
+	ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtwQcCgQAA
+	QNH7X0k0VLQ1jBbtNHUFd+C/t20/+mwfzspZlnWhzMvMmaZ5oozTyBlA7+HN6UFd31Ha
+	ruU0TdtQ6qbmVFVdUcqq5BSgV/HiPEH5M6dkecZJ0yylJGnCieMkpjziB+cOut1vnCso
+	ukaUMAo5QRAGFD/wOReQd/E4LshxHY4NsmyLYlomyDANytk4c04g/aRzNJCqqZwjSDkq
+	FFmRQZIsUURJ5BxA+8OeI4B2wu5/X6r+RswKZW5kc3RyZWFtCmVuZG9iago2NiAwIG9i
+	agoxODgKZW5kb2JqCjM0IDAgb2JqCjw8IC9MZW5ndGggNjcgMCBSIC9PcmRlciAxIC9F
+	bmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAv
+	RGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAx
+	IDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz
+	dHJlYW0KeAGNwgk3VHEYB+AvJhKJRCKRkpKSkhKJRCIZY8asZgxjZuz7vu9bX+v9vZ3r
+	mNO943/vfZ/z8N8E24zzpXCML01exNhwjC8ko3yhex5l06N8LjnCZ8IRPjN5GmHDYT6V
+	DPOp7kmYTYf4RPA4xMdDskE+NnkUZMMAHwn7+Sj50M+mfXwoeODjA6+4hw9U9z1sOMj7
+	wm7eT95zs1UX713Hnkt914XdAXEndlV3nEjdjx1JB3aubjtgsw/bdrf6oP0j24st1c1e
+	pP6NTeEebPZgw3Y3Nuyud0P7S7YL66prXUj9E2vCnVjrxKrtDqzaXemA9od4O1ZuXG5H
+	6u9YFm7DchuWJFuxZHmxFdpv4i1YNF5ogfpXLEg2Y6EZ85JNmLc814TrXzAn2Yg549lG
+	qH/GrPAnzEg2YMbydAOuf8S0cD2mdafqof4BU8LvMSlZh0nzE3X4/x0mhGsxoTteC/W3
+	GBd+g4RwDRKKlKihuP5rigtXU1w3Vk2mX1FM8iWNCVfRmMloFRm+oKhkJUV1RyvJ9HMa
+	lR15RqIVNGIyUkGGTykiXE6R5OFyMl1Gw4LhMgo/ES+lsGqolAwfU0i4hELJQyVktZiG
+	7AaLKfhIvIiCqoEiMnxIAeFCCiT7C8lqAfnt+grI90A8n3yq3nxKfZ+8knnkverJI5u5
+	5LE7mEvae7I5NKjqzqHUd8ktnE3ubHLZziKX3YEs0t4Rz6SBG52ZlPo2OYUzyJlB/ZLp
+	1G/ZkU7aW+Jp5Ej7B4pzCpwKZW5kc3RyZWFtCmVuZG9iago2NyAwIG9iago1NzIKZW5k
+	b2JqCjMzIDAgb2JqCjw8IC9MZW5ndGggNjggMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAw
+	IDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsg
+	MCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEg
+	XSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGl
+	woVSQlEAQMG/tru7u7HpBhUDA1uxA+tTjjEy+PDFjZ1NfpC0mPjg+7vi+DvF34gLj71h
+	95WY7egrEl+IGkdeUJwjkiOsPZQj9Kw++IzhE0GZgSfsPhKw7X9E9AP+f30PqLzH99N7
+	j2bPHTrddxje4pa5eovlG1adrtwg9JoVs8vXSL9iOX/pCs2LWXQuZCm8ZEHy/CXmL5gX
+	6LpA6Dkus3PnSD9jLn/2DK2nzOidPuX3CdPyp04wf8yUwMljnB8xaXHiCLmHTPw5foj6
+	DOMZxvSOZvh9wKj8kQNM7jMidngfh3sMWx/aQ+IuQ8aDu6hPM5hmQG9/mu87ivt2KL5N
+	n/DebRxu0Wu9ZwuJm/QYd2+iOEX3z64UOjtTdG6o79ig+DodwtvXsbtGu+22NUQnafu3
+	NYnKBK35LQl0NidojqtvimMYo0lmYwzLURqdNkQRGqHBbH0ElWHq8+vC6KwNobMmRGGQ
+	GsnVQSwHqHZaFUConyqzlX6k+6j8s8KHei/lesu8FHook1zqwbybUoElbr5+Al7liFUK
+	ZW5kc3RyZWFtCmVuZG9iago2OCAwIG9iago0MTAKZW5kb2JqCjIgMCBvYmoKPDwgL0xh
+	c3QgNjkgMCBSIC9GaXJzdCA3MCAwIFIgPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9QYXJl
+	bnQgNzEgMCBSIC9Db3VudCAwIC9EZXN0IFsgMyAwIFIgL1hZWiAwIDczMyAwIF0gL1Rp
+	dGxlIChDYW52YXMgMSkKPj4KZW5kb2JqCjcxIDAgb2JqCjw8ID4+CmVuZG9iago2OSAw
+	IG9iago8PCAvUGFyZW50IDcxIDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVog
+	MCA3MzMgMCBdIC9UaXRsZSAoQ2FudmFzIDEpCj4+CmVuZG9iago3MiAwIG9iago8PCAv
+	TGVuZ3RoIDczIDAgUiAvTGVuZ3RoMSAxMTg3MiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+
+	PgpzdHJlYW0KeAG9egt4U1W28N7nmZwkbR7Ns02TNGnTR/qkDwKFnpa+oA2UlkKLrbSU
+	MoUBLFjLS5gOoIWiI86MgsiML3QUBw3FwaADl8utIz64F0UvPhD1iq/RiuNUUSEn/9on
+	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
+	IC9DYXBIZWlnaHQgNzIwIC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBb
+	LTEwMTggLTQ4MSAxNDM2IDExNTldIC9Gb250TmFtZSAvQUJDQkVNK0hlbHZldGljYS1C
+	b2xkIC9JdGFsaWNBbmdsZQowIC9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9YSGVpZ2h0
+	IDU0OSAvRm9udEZpbGUyIDcyIDAgUiA+PgplbmRvYmoKNzUgMCBvYmoKWyAyNzggMCAw
+	IDAgMCAwIDAgMCAzMzMgMzMzIDAgMCAwIDAgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAg
+	MCAwIDAgMCAwIDAgMAowIDcyMiAwIDcyMiAwIDY2NyA2MTEgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDcyMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCjAgNTU2IDYxMSA1NTYg
+	NjExIDU1NiAwIDYxMSAwIDI3OCAyNzggNTU2IDAgODg5IDYxMSA2MTEgNjExIDAgMzg5
+	IDU1NiAzMzMKNjExIDU1NiA3NzggNTU2IDU1NiBdCmVuZG9iagoyMyAwIG9iago8PCAv
+	VHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQkNCRU0rSGVs
+	dmV0aWNhLUJvbGQgL0ZvbnREZXNjcmlwdG9yCjc0IDAgUiAvV2lkdGhzIDc1IDAgUiAv
+	Rmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAxMjEgL0VuY29kaW5nIC9NYWNSb21hbkVuY29k
+	aW5nCj4+CmVuZG9iago3NiAwIG9iagooTWFjIE9TIFggMTAuNi44IFF1YXJ0eiBQREZD
+	b250ZXh0KQplbmRvYmoKNzcgMCBvYmoKKEQ6MjAxMTExMDcxOTEwNDVaMDAnMDAnKQpl
+	bmRvYmoKMSAwIG9iago8PCAvUHJvZHVjZXIgNzYgMCBSIC9DcmVhdGlvbkRhdGUgNzcg
+	MCBSIC9Nb2REYXRlIDc3IDAgUiA+PgplbmRvYmoKeHJlZgowIDc4CjAwMDAwMDAwMDAg
+	NjU1MzUgZiAKMDAwMDA1Mjc0MCAwMDAwMCBuIAowMDAwMDQzNzk1IDAwMDAwIG4gCjAw
+	MDAwMDMwMzggMDAwMDAgbiAKMDAwMDAzOTI2MyAwMDAwMCBuIAowMDAwMDAwMDIyIDAw
+	MDAwIG4gCjAwMDAwMDMwMTggMDAwMDAgbiAKMDAwMDAwMzE0MiAwMDAwMCBuIAowMDAw
+	MDM5MjI3IDAwMDAwIG4gCjAwMDAwMDQ1ODkgMDAwMDAgbiAKMDAwMDAwODA1MCAwMDAw
+	MCBuIAowMDAwMDE1NDYzIDAwMDAwIG4gCjAwMDAwMTYzMDYgMDAwMDAgbiAKMDAwMDAx
+	MTA2MCAwMDAwMCBuIAowMDAwMDE1NDQyIDAwMDAwIG4gCjAwMDAwMDgwNzEgMDAwMDAg
+	biAKMDAwMDAxMDI4MiAwMDAwMCBuIAowMDAwMDEwMzAzIDAwMDAwIG4gCjAwMDAwMTEw
+	NDAgMDAwMDAgbiAKMDAwMDAxNjMyNiAwMDAwMCBuIAowMDAwMDE3MDI4IDAwMDAwIG4g
+	CjAwMDAwMDQ0MzMgMDAwMDAgbiAKMDAwMDAzMTMxOSAwMDAwMCBuIAowMDAwMDUyNDY2
+	IDAwMDAwIG4gCjAwMDAwMDQyNzUgMDAwMDAgbiAKMDAwMDAwMzk2NyAwMDAwMCBuIAow
+	MDAwMDAzODA5IDAwMDAwIG4gCjAwMDAwMDM1MDMgMDAwMDAgbiAKMDAwMDAwMzY1OSAw
+	MDAwMCBuIAowMDAwMDA0MTI1IDAwMDAwIG4gCjAwMDAwMzAzOTcgMDAwMDAgbiAKMDAw
+	MDAzMDQ0NCAwMDAwMCBuIAowMDAwMDM4MzMwIDAwMDAwIG4gCjAwMDAwNDMxNTAgMDAw
+	MDAgbiAKMDAwMDA0MjM0MyAwMDAwMCBuIAowMDAwMDQxOTIwIDAwMDAwIG4gCjAwMDAw
+	NDEzMDEgMDAwMDAgbiAKMDAwMDA0MDQ5NCAwMDAwMCBuIAowMDAwMDM5ODQ5IDAwMDAw
+	IG4gCjAwMDAwMzk0MjYgMDAwMDAgbiAKMDAwMDAzNzQzMyAwMDAwMCBuIAowMDAwMDE3
+	MDQ4IDAwMDAwIG4gCjAwMDAwMjAwMzggMDAwMDAgbiAKMDAwMDAyMDA1OSAwMDAwMCBu
+	IAowMDAwMDIyNjk4IDAwMDAwIG4gCjAwMDAwMjI3MTkgMDAwMDAgbiAKMDAwMDAyNDAw
+	MCAwMDAwMCBuIAowMDAwMDI0MDIxIDAwMDAwIG4gCjAwMDAwMjc2NjIgMDAwMDAgbiAK
+	MDAwMDAyNzY4MyAwMDAwMCBuIAowMDAwMDI5MDc3IDAwMDAwIG4gCjAwMDAwMjkwOTgg
+	MDAwMDAgbiAKMDAwMDAzMDM3NiAwMDAwMCBuIAowMDAwMDMwNDkxIDAwMDAwIG4gCjAw
+	MDAwMzEyOTkgMDAwMDAgbiAKMDAwMDAzMTM1NiAwMDAwMCBuIAowMDAwMDM3NDEyIDAw
+	MDAwIG4gCjAwMDAwMzc0NzAgMDAwMDAgbiAKMDAwMDAzODMxMCAwMDAwMCBuIAowMDAw
+	MDM4MzY3IDAwMDAwIG4gCjAwMDAwMzkyMDcgMDAwMDAgbiAKMDAwMDAzOTM0NiAwMDAw
+	MCBuIAowMDAwMDM5ODI5IDAwMDAwIG4gCjAwMDAwNDA0NzQgMDAwMDAgbiAKMDAwMDA0
+	MTI4MSAwMDAwMCBuIAowMDAwMDQxOTAwIDAwMDAwIG4gCjAwMDAwNDIzMjMgMDAwMDAg
+	biAKMDAwMDA0MzEzMCAwMDAwMCBuIAowMDAwMDQzNzc1IDAwMDAwIG4gCjAwMDAwNDM5
+	NTggMDAwMDAgbiAKMDAwMDA0Mzg0MyAwMDAwMCBuIAowMDAwMDQzOTM2IDAwMDAwIG4g
+	CjAwMDAwNDQwNTEgMDAwMDAgbiAKMDAwMDA1MTk1NCAwMDAwMCBuIAowMDAwMDUxOTc1
+	IDAwMDAwIG4gCjAwMDAwNTIyMDYgMDAwMDAgbiAKMDAwMDA1MjY0NiAwMDAwMCBuIAow
+	MDAwMDUyNjk4IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNzggL1Jvb3QgNjEgMCBS
+	IC9JbmZvIDEgMCBSIC9JRCBbIDw0MDJjNDE5YjU1N2U4MTRkOTA1MTdiOGZhZDAxYWZk
+	Mz4KPDQwMmM0MTliNTU3ZTgxNGQ5MDUxN2I4ZmFkMDFhZmQzPiBdID4+CnN0YXJ0eHJl
+	Zgo1MjgxNQolJUVPRgoxIDAgb2JqCjw8L0F1dGhvciAoUm9iZXJ0IEx5KS9DcmVhdGlv
+	bkRhdGUgKEQ6MjAxMTA5MTkxNzE1MDBaKS9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9m
+	ZXNzaW9uYWwgNS4zLjIpL01vZERhdGUgKEQ6MjAxMTExMDcxOTEwMDBaKS9Qcm9kdWNl
+	ciA3NiAwIFIgL1RpdGxlIChyc19jb21wdXRlKT4+CmVuZG9iagp4cmVmCjEgMQowMDAw
+	MDU0NTMzIDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzw0MDJjNDE5YjU1N2U4MTRkOTA1
+	MTdiOGZhZDAxYWZkMz4gPDQwMmM0MTliNTU3ZTgxNGQ5MDUxN2I4ZmFkMDFhZmQzPl0g
+	L0luZm8gMSAwIFIgL1ByZXYgNTI4MTUgL1Jvb3QgNjEgMCBSIC9TaXplIDc4Pj4Kc3Rh
+	cnR4cmVmCjU0NzEwCiUlRU9GCg==
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	AAEAAQAB
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array>
+			<dict>
+				<key>name</key>
+				<string>Canvas 1</string>
+			</dict>
+		</array>
+		<key>Frame</key>
+		<string>{{67, 91}, {969, 926}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{-129, -19}, {834, 772}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
diff --git a/docs/html/images/rs_compute.png b/docs/html/images/rs_compute.png
new file mode 100644
index 0000000..263b2ec
--- /dev/null
+++ b/docs/html/images/rs_compute.png
Binary files differ
diff --git a/docs/html/images/rs_graphics.graffle b/docs/html/images/rs_graphics.graffle
new file mode 100644
index 0000000..5dee4c6
--- /dev/null
+++ b/docs/html/images/rs_graphics.graffle
@@ -0,0 +1,3107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>138.28.0.154505</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 733}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-09-19 10:15:24 -0700</string>
+	<key>Creator</key>
+	<string>Robert Ly</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{95.9835, 355}, {107.033, 31}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>155</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>246</integer>
+				<key>Position</key>
+				<real>0.19373114407062531</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.938075</string>
+						<key>g</key>
+						<string>0.938269</string>
+						<key>r</key>
+						<string>0.938154</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.727869</string>
+						<key>g</key>
+						<string>0.728019</string>
+						<key>r</key>
+						<string>0.72793</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.472997</string>
+						<key>g</key>
+						<string>0.473094</string>
+						<key>r</key>
+						<string>0.473036</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 bindRootScript()}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{71, 431.245}, {157, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>247</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.628571</string>
+						<key>g</key>
+						<string>0.768599</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.236788</string>
+						<key>g</key>
+						<string>0.532236</string>
+						<key>r</key>
+						<string>0.990271</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.131021</string>
+						<key>g</key>
+						<string>0.363196</string>
+						<key>r</key>
+						<string>0.725948</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript object}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{71, 306.83}, {157, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>200</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.628571</string>
+						<key>g</key>
+						<string>0.768599</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.236788</string>
+						<key>g</key>
+						<string>0.532236</string>
+						<key>r</key>
+						<string>0.990271</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.131021</string>
+						<key>g</key>
+						<string>0.363196</string>
+						<key>r</key>
+						<string>0.725948</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 RenderscriptGL context}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>247</integer>
+				<key>Info</key>
+				<integer>8</integer>
+			</dict>
+			<key>ID</key>
+			<integer>246</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>36</real>
+			<key>Points</key>
+			<array>
+				<string>{149.5, 330.83}</string>
+				<string>{71, 443.245}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+				<key>Info</key>
+				<integer>5</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>202</integer>
+				<key>Info</key>
+				<integer>6</integer>
+			</dict>
+			<key>ID</key>
+			<integer>245</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{149.5, 236.415}</string>
+				<string>{149.5, 266.076}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>235</integer>
+				<key>Info</key>
+				<integer>5</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>251</integer>
+				<key>Info</key>
+				<integer>8</integer>
+			</dict>
+			<key>ID</key>
+			<integer>242</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>57</real>
+			<key>Points</key>
+			<array>
+				<string>{228, 443.245}</string>
+				<string>{344.75, 303.184}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>247</integer>
+				<key>Info</key>
+				<integer>7</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{54.5, 266.076}, {190, 73.3394}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>202</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 RsSurfaceView or RsTextureView\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{54.5, 186.245}, {190, 50.1697}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>235</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Activity}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{54.5, 401.585}, {190, 68}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>234</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+Renderscript entry point\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{29.75, 139.33}, {239.5, 350.67}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>233</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.938075</string>
+						<key>g</key>
+						<string>0.938269</string>
+						<key>r</key>
+						<string>0.938154</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.727869</string>
+						<key>g</key>
+						<string>0.728019</string>
+						<key>r</key>
+						<string>0.72793</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.472997</string>
+						<key>g</key>
+						<string>0.473094</string>
+						<key>r</key>
+						<string>0.473036</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+\
+\
+Android Framework\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>Group</string>
+			<key>Graphics</key>
+			<array>
+				<dict>
+					<key>Class</key>
+					<string>LineGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Font</key>
+						<string>DroidSans</string>
+						<key>Size</key>
+						<real>11</real>
+					</dict>
+					<key>Head</key>
+					<dict>
+						<key>ID</key>
+						<integer>250</integer>
+					</dict>
+					<key>ID</key>
+					<integer>249</integer>
+					<key>OrthogonalBarAutomatic</key>
+					<false/>
+					<key>OrthogonalBarPoint</key>
+					<string>{0, 0}</string>
+					<key>OrthogonalBarPosition</key>
+					<real>4.1290435791015625</real>
+					<key>Points</key>
+					<array>
+						<string>{439.75, 326.693}</string>
+						<string>{439.75, 351.997}</string>
+					</array>
+					<key>Style</key>
+					<dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.7</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>4</real>
+							<key>HeadArrow</key>
+							<string>FilledArrow</string>
+							<key>LineType</key>
+							<integer>2</integer>
+							<key>TailArrow</key>
+							<string>0</string>
+						</dict>
+					</dict>
+					<key>Tail</key>
+					<dict>
+						<key>ID</key>
+						<integer>251</integer>
+						<key>Info</key>
+						<integer>5</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{344.75, 351.997}, {190, 47.0177}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Helvetica-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>250</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.274119</string>
+								<key>g</key>
+								<string>0.950739</string>
+								<key>r</key>
+								<string>0.787494</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>0.223529</string>
+								<key>g</key>
+								<string>0.776471</string>
+								<key>r</key>
+								<string>0.643137</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.165602</string>
+								<key>g</key>
+								<string>0.586124</string>
+								<key>r</key>
+								<string>0.428309</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript Graphics Engine}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{344.75, 279.675}, {190, 47.0177}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>DroidSans-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>251</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>1</string>
+								<key>g</key>
+								<string>0.874135</string>
+								<key>r</key>
+								<string>0.71718</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>1</string>
+								<key>g</key>
+								<string>0.662438</string>
+								<key>r</key>
+								<string>0.464468</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.93512</string>
+								<key>g</key>
+								<string>0.472602</string>
+								<key>r</key>
+								<string>0.333854</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Graphics Renderscript (.rs)}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{320, 238}, {239.5, 179}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Helvetica-Bold</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>252</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.491442, 0.260063}</string>
+						<string>{0.507118, -0.224086}</string>
+						<string>{0.507118, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27978, -0.478478}</string>
+						<string>{0.293938, 0.543044}</string>
+						<string>{-0.286232, 0.553804}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.938075</string>
+								<key>g</key>
+								<string>0.938269</string>
+								<key>r</key>
+								<string>0.938154</string>
+							</dict>
+							<key>FillType</key>
+							<integer>2</integer>
+							<key>GradientAngle</key>
+							<real>90</real>
+							<key>GradientColor</key>
+							<dict>
+								<key>b</key>
+								<string>0.727869</string>
+								<key>g</key>
+								<string>0.728019</string>
+								<key>r</key>
+								<string>0.72793</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>2.3972222805023193</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.472997</string>
+								<key>g</key>
+								<string>0.473094</string>
+								<key>r</key>
+								<string>0.473036</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+\
+Renderscrpt Runtime Layer\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+			</array>
+			<key>ID</key>
+			<integer>248</integer>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-11-07 10:35:41 -0800</string>
+	<key>Modifier</key>
+	<string>Robert Ly</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgWQCgRgDhg==</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9m01zHrcNgO/7K/YoH7xZkvt5bNMk
+	00wPbeRpD0kPqWzHduU4kZSm+fd9QAIg39UrWZ52OhpZBJYEQeKDAEj/3P+l/7kf+ZnX
+	pV9T6m9e9X/rf+w/+/w29Fe3fcg/t1f983GYe/ltOr7uP/vzq5urVz/d/fL9dXfzFlJx
+	DplcnOY+hWlYxrj1cQvDtq+xv3rff/bH96H/w4c8bxxL53nrU9qHNNM37fuwxrB1pW98
+	tG9ch2kck9KtfZWJaQp9nITuuvVhX4Y1xaiE05FwCHs/7UMYpXNMy7CFaBxPx85LqH2n
+	fRzCHHYlPB/7bnPtm7ZlSDEsyvFifcOy5W1Lc7/MsmnwkPZ5mJc1KN31sb5xDfBg7Nau
+	oZCdYg+T87bIBk/jkBCGkt0KWVGDFBOczv37fp4XJC3ta9obpBfZHIQ/7/lDGhZBGQgx
+	bSd2UcZItxTWIU0pACqJxMoLbWld5RmldU0rlL6AXYpjHVyAPfcW9E7f079CZ4S9mOlI
+	S9kzop2wbqu76t94+33WdWhmbtlu1EV0PGyjG0LV8P7mbfcz9iDm8hwFQGVXdmmUcaKt
+	l29Cf/sGzX7ApkL/NaPfFdv6/LIbh2lNY1owK2nsU27EfV/7y8+Rh880ZstkCllDTJtL
+	SNpVQp2AZeujmFPZellbxBBMQlOYXEJTQNmKIE3IYS0S6iZaRULSaiQkYN5wG1yASSUk
+	9A2jf9EOaQkXQoeWsWcSyquy1ZmEykov2U68Ebp9248dnqjZmKMIfv+iD1HlE/vn6zYs
+	2zZt/fNl6V8goS/DMLKtL17333YX3zwTpxb7i1fW+PEZEgDxUv/6hxvrcWuNK2vcPOsK
+	lZ900F2vDaf/iyKM/N1bRbw3IjpRd2Fj/6Q9vrcev1mj5env/Yuv+y9eqMalac36OCdc
+	zLR0mHEKLUbEnhIeU4xZe4GZSp8w7BuicxgvARVRm9yjm0ZUSoYKlTJmXNEeIKM54tyk
+	h81rMOJX3hTToQbTMow7zgF2yqg0tVQd0lmFhn5XTIErX8fvdcSsa5FZT1dbubBdM05t
+	f7Iynu4s5idHpNCKxf43WXXYWcw2jGFdVrxHl4/RE+9xTnXjzkEzY2rZgcSzDqTTQ/ng
+	QFDWlNI2q9/g1ACzpxkTeMh/5IV0cd2HZWWcq4hjGhVxnIpbTvExbHjwIv64xUxFfH/B
+	YMDDIjJ1FUlx5vitKpLiUnqoijhsKoLv1x6NijhOxadUHdJZXeDGR3fscYR9hK1F/FNR
+	EV+tqUjdNVUR359GRRz3vj/xW/15v6XCl6P46LowrW0niJqOjqu/+Eqdg3sl9xI/PeNQ
+	wYG90R7maNxbuf8yR+NOyv2KeamXSss/+HROxMn6J5vw4Ay7i+8uhiPXTua7Z8/6s64s
+	icaN6JPrqWFwIO52DOdaKNo97+KGsrEnjoFMpeop0d0udmN62qWEnkYitUoVr5b7mKYa
+	bJpKyKo9Wk1VnGue0TXNs5ld85Jhjj0OsJyhRTN9Pa6ryVZsutr7nqiuOoyuwls+KBx3
+	4s5kVZPszcGdlazg4M46D1H0JE4zEflOuFncWTrrziy0at1Z9/mlRD9xIw6iQagaovi1
+	QHiCX3vUn/W4vGHfccGmJ51jWj2xXqYX4uInUhCHp0Kl6gkpwxg4Sk1PiMmxyzW0ekK+
+	In2gkg9byV8yXPXEMFVPOu9lMjW6DpeZJaZSqSsvR9g1zb7XEbOup+qJrbjqie1J0Ym6
+	b41P8718kk8zDTjj0yT3medpPefT/l9+6DHfibp9gu/sLr4wV/nDwd0aHtdZ/ZpkDaMo
+	8mdf3Yb+h9s2GMgBvuyYmZEdghWTtmEuR6v1IVMZSRWufdAUFXHZ5ZA5J/BlWo4fpo0y
+	rQ3n9N5JnZmBceQxiQxREEKPTNkRKP+b+4Nes5av+X13bxli+jYHgZewaHOgq8aizeGI
+	OocPkhO05KXCDqvH9KAVl4W4q1P4GniFcQk7S4+47BKXzXvEpYN2eJTxVwZLcCuDpXMX
+	MbKcLzmxOJFq5ZnIW6gwkLcIF9LGnjiXEEYBOcTzh0KhM1BC59o+1yrfp30na2PzYQ5+
+	IKaYwn6ncyVbnvChPfKGZEvNvPkOSeQJITYhsr/yryS1YsfLarFkU7khr22lGKiCEHeE
+	jejSEtvprCM3Wq0j74sj/+TElj3sgqSFopK68Qo3IlaMijSwrmUlPnCYPRNZqVSnLW9p
+	0YdpIxuUXNdFTOHGZpKmiVjajYhzLxFxVymUxB/qJmKZqYj4tNWIOCAKmKsi7px9F7Eu
+	z0WscBWxIg6e+JAV3xMgsSWGOHKOvrg6SZAp8yyr5MdhHj3O5FAnQb743Y8vbz68fdl/
+	efP9+1e/frj557P+xbuabXLQo1JwTg1BJDaFBmaRU8pVIyKr0kUsTAbAyEpVSsG45fFs
+	U/4schd6Ml66x0UiuE2qeEouLoQn2fBkPoM4sYUdAzmu52Gj/FFRnIUNOYE6m4zB5WOZ
+	+2FAOxInKpO5qy2p0zmpfuiST7ZIZHiCKFEXgVZc8MSwKgEX6vnRzLGINxIxyEaUQGs+
+	a59G6759fmLeKIyTaLPlhMgmbIOrsMnlS5civWlkYWRWKsxpZJsZf5W9LR4GYQtswp6W
+	bUCNMFAVNj3wRPQoymWQCltBic1M2NYjy8XJKVQmUxna3O23rgWw7AIq08wiSuJLcmHb
+	krNsFSBWV2Hb14PBHtLBexI9JINsw0JRYcFO1+5Qx+r/mzpWd/HkFO5MmezO077frAhm
+	aaXlfx8eiIzu2shIzvi8fTM1IcoSG6WrInJDZB0pHgA5lE6qVfM0YwfUkIvOzeiOkBDP
+	LC6E0m/RIdcy7EaVUglORM6NlilkWqZg1TIolv5FIYycQmUyUx6d++RbC0jpRNTKuVY1
+	80W5avuqTzaKVaqi2Xe2Tk5/3IqwOWI84lY4+cOyc8dgtzuHPK6WmosqzlTjl2UvVxqX
+	b5aHvEue68nepXsgi8tLorCE9XOFYbJ3RONfDKceJGz4JQq8KvuwEfMICT9OJJfFR5rs
+	I9m4nj4qe7nnoQf08nFSILH9fJwoWGWf74WEYpaak1MoT2YijTp3+82GFa5U9s61yt4X
+	ZbLvbNWFK4dc9o55ipdpRXtwMyL0NW1cAnksoMVyogGrP7vD8Cr2v8z4rfhzR7G65j1u
+	3eJzd4zSJeyIKuHOcXqEcBvG+U8onuOBidM/kzAJJzfP0iHt5LyU7uivAUMiKajWbZBK
+	2MBGwobKcnNyApG0n5whBmrPxinYF5Wwc60SnnRRNWLwVWe9c8gl7Bi3bmHTrHsl8wDe
+	LRz/aGhPEBYlDy+xw3rWuo3Yk637oRqNLCnHWuM6Ly57Cb4yosqeQEhxRZYSp5OFEFhr
+	LEhhBRIYmMrazdNg6nxrGz/IpbJYa7Fug0z25WMbP1iPIlEy7kxOoRIdqkilaud+QIES
+	P9gX7SiZiK4z0/FFeQDhqy4+R/eghhD+/SnWPTWiPVg3aTVR5jh9JIjwquylXVv5Kf/a
+	68zuBF6Z7f+1Nfnmhk5zkVO2uDA7k40EDoC0x3NRzsXbV7/2H26ILiwF+dgUPkPXXgiS
+	ghEWkq0/TwcXd/HN7YsnUD9T1YrkoFua9/s0v21ipn+b/7yr26oXh15g/x/sIRcwAZWT
+	BR4CRdnCusCPFqPEN0ReC0z4UTlTJSRD54mAFSGHKuftKWKnBDrKNZh1iuJ9AckBiXFI
+	kQE7qQ7ZOZ2/Jy4SA/ma0FQEbnzlFUfkDUTcKQlzT166SN5DHqmgOIMTxEdAcnxWQWHE
+	CDAlV2hSAmowUnh6rLwlfiJEPFPi7p9fcWspEVfOawA3DSFNJL6OiCi2vIepw6gfLbmo
+	RAUjyQsWbv15IiNX5+hokCcADYY69RoSHNZhnEdTlG0x2uIjCyZPD50yqvLI2pU2lHBf
+	qzBr81dMZVLXdpWvsuwcaAzPq5aav6hPfN8rDEuS114bLA5OzoCKQH8KIu9493BBMXBl
+	wb0Hu7JwSyCqJLNQEp0pakRem5Bmrj3ubZgmymmG6XiXMyxR4gcbRwFkplq2s3lxkY9Y
+	boNBPzkawfg43jBxtYCiVeqc39siobVzUDHOZxlHLMnlwBA5SZivUKfw4xjj4N76Ht91
+	Mc+8y6jZOHBpIndkZdtFy0DKJawieBt0QMAHnpbvXASJvaYVWTMGzuQxi4Ewz3HUwNc9
+	BRnskUtg70P1QnpgwRE7VaiwwKZl2A2e8dJ7QutW7iB6NoRHYiM3AmjmCOdCnwh1lj5I
+	KXIHlDeie8wc2fxIEWVhDBrHacteQAeprsSy2MEyQRAMpor3wRmtzCEPrXheVbhZVpaU
+	V7vhcsrbnmVk0CZMIOpS0eZVFuf5ui+kV5AZw847tX5FAiRLhWeCz00wa+AncxSYTYbB
+	BGnqxA5HKRIyG29uqCILTl6FxdSx25i9eN1FErb8GOywtKIXElSvMME9Af3k4ivKUwQD
+	rztGlWqn47I35zXcFskDC4BLlcH4UPH0+LIM4oQziJKEFBpK+JrcIU9lAMuHD4Ou+5Uq
+	Z668OQ7Nn3DXmVhu6zyMlC8KPdQuveRcE1ahzxhdRVfnsoW3eyLRcwuX2BnRsFF4Uslv
+	sWlxFlYn+2jgzIPGsmP5scb2iYHziq+hMoHHX3hyJs++2N8xhnwrdPSrWHgH9+KX1bxl
+	2x0UIamEHSdiSyNKxTPHLEPuUstgSm7yjeeSmVaRcKJgPaG4DSXzJXkqA7KE3c1c1113
+	HDJxYrmt82TZ+aztl6YtBiSnprKaJeyrcAn7Its9UQnbN2KUxx5dFG/I8zSX4SFCLvVH
+	PMN0iJ0I5B67nyz3hh7GebysofSTimx2L8nDr5o6Nzpxyvz9MDRKHJCwxENcC+tWk/Og
+	3Ypy5Zqyu7hz1muU2rKhzkbCj1xaK87GwaqKOULJXYoqchoHnKAAcceTal1OwA0PKWBR
+	RXk2M8q5bTodOU/kO3pL+qYAjgrpO9T4GsehSUZLmjaLqFjnUPulbWdFdEZVEXUNjSKW
+	XSjGqTviiug7JEW47GqENSIK3h+bqzm+pCgPp/0lRZG0xNZlv7Kr2c+6GivnWWwmj7bL
+	Q4pPdTXZUXJtYRU4OUwUJEF2sRgui3TimorqG7EVAp14a2MxvYDEWBks8pXXhvsYm7OE
+	9Dd/z2eJAVm+HJM21DfdcYjLaOWmzpIl53O2X9p26WWMlqNE11Cdmi9Rjg7bETtKDH6K
+	ozEJ3rfV51y7Ef1wDJ+x1sccTXnc5dZ6dDT906v53YU5gX9ohf6d/nXq7i7u1eox5Z2M
+	V8JGniJ3cSTZ5p1OBpG3nK1EdxmMHPz6TU+rBsNVEL2twzyKpjlIaF0u5J0cBas6lVSv
+	+soI4HVPIsiFP7EZj1k6Ekdl0ihVDJedDPYOgA8DVw0lgkVm8XGrLqnOy35UngBEb1qE
+	VuchMZUNJM4jjeDMJvjlDDWD/lggkiSMFsWSN+fjk33D43fzD5Xn6wKIovH9Lm7AVtyA
+	Jj7eEYmKy828CxT314obv9GKeyNdypfzLm4Ccpuq479NnIgbsBU3YJWKUWowkmkbCK3k
+	AO/kDkDtyHsJOZ5sHKAuycTNIudGugCn4gbxFD/hsjxEI5IRRp5gn3MSZrRWcbcHR+Xh
+	evO03azc/t5dulm79zAidmd3992FvcjsyuPy/wBuuobCCmVuZHN0cmVhbQplbmRvYmoK
+	NiAwIG9iago0MjM5CmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQg
+	NCAwIFIgL1Jlc291cmNlcyA3IDAgUiAvQ29udGVudHMgNSAwIFIgL01lZGlhQm94IFsw
+	IDAgNTc2IDczM10KPj4KZW5kb2JqCjcgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9U
+	ZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL0NvbG9yU3BhY2UgPDwgL0NzMiAy
+	NiAwIFIKL0NzMSA4IDAgUiA+PiAvRXh0R1N0YXRlIDw8IC9HczIgMzcgMCBSIC9HczEg
+	MzggMCBSID4+IC9Gb250IDw8IC9GMS4wIDI3IDAgUgo+PiAvWE9iamVjdCA8PCAvSW0z
+	IDEzIDAgUiAvSW0yIDExIDAgUiAvSW02IDE5IDAgUiAvSW03IDIxIDAgUiAvSW0xIDkg
+	MCBSCi9JbTggMjMgMCBSIC9JbTUgMTcgMCBSIC9JbTQgMTUgMCBSID4+IC9TaGFkaW5n
+	IDw8IC9TaDMgMjkgMCBSIC9TaDIgMjggMCBSCi9TaDEgMjUgMCBSIC9TaDUgMzEgMCBS
+	IC9TaDkgMzUgMCBSIC9TaDEwIDM2IDAgUiAvU2g4IDM0IDAgUiAvU2g3IDMzIDAgUiAv
+	U2g0CjMwIDAgUiAvU2g2IDMyIDAgUiA+PiA+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0Nv
+	bG9yU3BhY2UgMzkgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41IC0yNC4w
+	MDg4NCA5NS41IDI0LjAwODg3Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQgWyBmYWxz
+	ZSBmYWxzZSBdIC9GdW5jdGlvbiA0MCAwIFIgPj4KZW5kb2JqCjI4IDAgb2JqCjw8IC9D
+	b2xvclNwYWNlIDM5IDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgOTUuNSAtMjQu
+	MDA4ODQgOTUuNSAyNC4wMDg4NwpdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5kIFsgZmFs
+	c2UgZmFsc2UgXSAvRnVuY3Rpb24gNDEgMCBSID4+CmVuZG9iagoyNSAwIG9iago8PCAv
+	Q29sb3JTcGFjZSAzOSAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDEyMC4yNSAt
+	ODkuOTk5OTggMTIwLjI1IDkwLjAwMDA0Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQg
+	WyBmYWxzZSBmYWxzZSBdIC9GdW5jdGlvbiA0MiAwIFIgPj4KZW5kb2JqCjMxIDAgb2Jq
+	Cjw8IC9Db2xvclNwYWNlIDM5IDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgOTUu
+	NSAtMzQuNSA5NS40OTk5OCAzNC41MDAwNApdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5k
+	IFsgZmFsc2UgZmFsc2UgXSAvRnVuY3Rpb24gNDMgMCBSID4+CmVuZG9iagozNSAwIG9i
+	ago8PCAvQ29sb3JTcGFjZSAzOSAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDc5
+	IC0xMi41IDc5IDEyLjUwMDAzIF0gL0RvbWFpbgpbIDAgMSBdIC9FeHRlbmQgWyBmYWxz
+	ZSBmYWxzZSBdIC9GdW5jdGlvbiA0NCAwIFIgPj4KZW5kb2JqCjM2IDAgb2JqCjw8IC9D
+	b2xvclNwYWNlIDM5IDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgNTQuMDE2NSAt
+	MTYgNTQuMDE2NDkgMTYuMDAwMDIKXSAvRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBbIGZh
+	bHNlIGZhbHNlIF0gL0Z1bmN0aW9uIDQ1IDAgUiA+PgplbmRvYmoKMzQgMCBvYmoKPDwg
+	L0NvbG9yU3BhY2UgMzkgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA3OSAtMTIu
+	NSA3OSAxMi41MDAwMyBdIC9Eb21haW4KWyAwIDEgXSAvRXh0ZW5kIFsgZmFsc2UgZmFs
+	c2UgXSAvRnVuY3Rpb24gNDYgMCBSID4+CmVuZG9iagozMyAwIG9iago8PCAvQ29sb3JT
+	cGFjZSAzOSAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDk1LjUgLTM3LjE2OTcg
+	OTUuNDk5OTggMzcuMTY5NzQKXSAvRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBbIGZhbHNl
+	IGZhbHNlIF0gL0Z1bmN0aW9uIDQ3IDAgUiA+PgplbmRvYmoKMzAgMCBvYmoKPDwgL0Nv
+	bG9yU3BhY2UgMzkgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyAxMjAuMjUgLTE3
+	NS44MzUgMTIwLjI0OTkgMTc1LjgzNTEKXSAvRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBb
+	IGZhbHNlIGZhbHNlIF0gL0Z1bmN0aW9uIDQ4IDAgUiA+PgplbmRvYmoKMzIgMCBvYmoK
+	PDwgL0NvbG9yU3BhY2UgMzkgMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41
+	IC0yNS41ODQ4NSA5NS40OTk5OCAyNS41ODQ4OQpdIC9Eb21haW4gWyAwIDEgXSAvRXh0
+	ZW5kIFsgZmFsc2UgZmFsc2UgXSAvRnVuY3Rpb24gNDkgMCBSID4+CmVuZG9iagoxMyAw
+	IG9iago8PCAvTGVuZ3RoIDE0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h
+	Z2UgL1dpZHRoIDUwMiAvSGVpZ2h0IDg4MiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JT
+	cGFjZSA1MCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNTEgMCBSIC9CaXRz
+	UGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAx
+	AQAAAMKg9U9tCy+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgIHfwABF0AABCmVu
+	ZHN0cmVhbQplbmRvYmoKMTQgMCBvYmoKNTgxNgplbmRvYmoKMTEgMCBvYmoKPDwgL0xl
+	bmd0aCAxMiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0
+	MDIgL0hlaWdodCAxMTYgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNTAgMCBS
+	IC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDUzIDAgUiAvQml0c1BlckNvbXBvbmVu
+	dAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQdv
+	iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwb+
+	gQEilgABCmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKNjM0CmVuZG9iagoxOSAwIG9i
+	ago8PCAvTGVuZ3RoIDIwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug
+	L1dpZHRoIDQwMiAvSGVpZ2h0IDE3MCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFj
+	ZSA1MCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNTUgMCBSIC9CaXRzUGVy
+	Q29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAA
+	AMKg909tDjeIQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDgY2AhCQABCmVuZHN0cmVh
+	bQplbmRvYmoKMjAgMCBvYmoKOTE3CmVuZG9iagoyMSAwIG9iago8PCAvTGVuZ3RoIDIy
+	IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMzNiAvSGVp
+	Z2h0IDcwIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDUwIDAgUiAvSW50ZW50
+	IC9QZXJjZXB0dWFsIC9TTWFzayA1NyAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20MH4hAYcCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw8BwYE68A
+	AQplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjMzMQplbmRvYmoKOSAwIG9iago8PCAv
+	TGVuZ3RoIDEwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRo
+	IDUwMiAvSGVpZ2h0IDQ5MCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA1MCAw
+	IFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNTkgMCBSIC9CaXRzUGVyQ29tcG9u
+	ZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9t
+	B2+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgIF/YEM5AAEKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iagozMjQxCmVuZG9i
+	agoyMyAwIG9iago8PCAvTGVuZ3RoIDI0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlw
+	ZSAvSW1hZ2UgL1dpZHRoIDIzNiAvSGVpZ2h0IDg0IC9JbnRlcnBvbGF0ZQp0cnVlIC9D
+	b2xvclNwYWNlIDUwIDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA2MSAwIFIg
+	L0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAHt0DEBAAAAwqD1T20MH4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMG/gMD6FAAAQplbmRzdHJlYW0KZW5kb2JqCjI0IDAg
+	b2JqCjI4MwplbmRvYmoKMTcgMCBvYmoKPDwgL0xlbmd0aCAxOCAwIFIgL1R5cGUgL1hP
+	YmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0MDIgL0hlaWdodCAxMjIgL0ludGVy
+	cG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNTAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwg
+	L1NNYXNrIDYzIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVj
+	b2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQlPiEBhwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBg4DMwPtoAAQplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjY2NQplbmRv
+	YmoKMTUgMCBvYmoKPDwgL0xlbmd0aCAxNiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5
+	cGUgL0ltYWdlIC9XaWR0aCA0MDIgL0hlaWdodCAyMzggL0ludGVycG9sYXRlCnRydWUg
+	L0NvbG9yU3BhY2UgNTAgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDY1IDAg
+	UiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh
+	bQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgPDGFw
+	AAEKZW5kc3RyZWFtCmVuZG9iagoxNiAwIG9iagoxMjc1CmVuZG9iago1MyAwIG9iago8
+	PCAvTGVuZ3RoIDU0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp
+	ZHRoIDQwMiAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw
+	b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
+	ID4+CnN0cmVhbQp4Ae2dW1PaWhiGyUpCQiAcKycL21Y51EOcwSJGBTcWilAREQL0//+R
+	HWrbASrfHeubPX2/Gy7eCS/zPKy14GoFAhgQAAEQAAEQAAEQAAE5BBQhVIxUAkIoyja5
+	ilD1oGGGMDIJmIauqW87UVTdDNuxRBIjkUAiHo1YhibecCLUYDiWyuTfF4oYeQQK+7l0
+	0g7pfy4TRTUiqfxB6fjUcc4xsgg4ZyfVw0Imbumbq0RRg5F3hbJTd2+bLYw8As2bRu3k
+	MJ/wlayf70IPpwrV2k2723voY+QRePjaaTWco1zM3Ni3VDOWK9ea3W9Po+cxRh6B59Gw
+	f++efdiLrC8SRQunDpyb7uN46nkzjDwCnjcZDdqX1by/SFa3LRG0M6V6ezD25vPFYvEd
+	I4eAz3o+m456t84/KUtb/QUsjFj+2O0+TZc+YESOjh8tSyUvg38vDv1ta9WIaiben972
+	Rh5WiEQbv5RMHr9cljL2upFQouA0H549LBDZRr4v5pNhp1HJ2sG1NRJKFp1Wf+wbkf6J
+	/vrC+fSpe1XJRf8wcg4jPF+OpRG3usXIjOcz/d2tv42s/mtX/V1ruUZghOHLASMM0MlK
+	GCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCd
+	rIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM
+	0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQw
+	wgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9D
+	CCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHx
+	MIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQR
+	Eg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlKGCHxMIQwwgCdrIQREg9DCCMM0MlK
+	GCHxMIQwwgCdrIQREg9DCCMM0MnK30Y2bzp+vVeXfBbhLghsNfJ69/QuKvGeBIHFwjfS
+	uapkN++eThTOXu9nJx5GtAMCvpHl/ezlzPr97MKM75/cfB1N57igfQfUt7/lwp/Zy+N9
+	vZSO6KvniDCiuWqjM5zMoGQ7vh0kvpC5N+7f1T6+C2urRhQ9kj6q3fWfp7M5RiqBmTcZ
+	dq9PC8mQGlgZRbOShZOr+8HoZTLFyCQwGQ97rYtSNmqIFSGBgDDszOG52+59Gz5hJBIY
+	Pg66rfpxMWWtHSOBgKKF4vkj57LZ/tLFSCTQub+7vjg+SNuGunqM+MtF6FYi9+HT+efL
+	K9e9xsgh4LqNeu2sXExHzbVzfbl/Kapuxfb2D47KlU8YaQSqldLHYi5lm9r6KfJTiRmJ
+	p9KZbA4jj0A2s5eMhg1NbOxZP5QILWhaETuKkUnADluGvnmGLH0sRxGqpgeDQQMjiYAP
+	W9c19a0F8qrEl6IoAiORgA/8jf3qlw68ggAIgAAIgAAI/N8J/Ac/+KIKCmVuZHN0cmVh
+	bQplbmRvYmoKNTQgMCBvYmoKMTIwNAplbmRvYmoKNjMgMCBvYmoKPDwgL0xlbmd0aCA2
+	NCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0MDIgL0hl
+	aWdodCAxMjIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUg
+	L0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAHtl2tT2moUhUlCLtwFVISCekopViGdQ+sdGKkgl4MClQD9/3+koTNtwcv2i33XnOna
+	n2DWkJV5HvZLCAQ4JEACJEACJEACJEACaghoum5wlBLQdU17Tq6mG6ZlOyGOSgKObQaN
+	p51ohulEYolkiqOQQHIjHg3bQf0JJ7phRRLpTC5f2OWoI1B4k91OxULm4zXRDDuazu2X
+	Diuu+5GjioBbPTooFjIbYfPhlmiGFd0svHePz+uNJkcdgcblae2omEv6StZ/33Uzki4c
+	1C5bnW6vz1FHoHfTbp6677IJ58G5ZTiJ7Ptao/Pf3Wg84agjMB7d9r+cV//Ziq4viRaM
+	pPfdy85wMvW8GUcdAc+7Hw1aJwc5f0lWjy3dimVKx63BxJvPF4vFN44aAj7r+Ww66tbd
+	vXQ4uPoErNuJ3OF552669EEjanT8aFkq+Tq4+lT0j61VI4aTzFfq3ZHHDVFo46eS++H1
+	SSkTWzcSShbcRm/scUFUG/m2mN/ftk/LOzFrbUdCqV232Z/4RpTf0V9fOJ/edc7K2fgj
+	Ix9pBPPlWBo5P3jGyAxzT3936y8jq//aDf/UWu4IjQC+HDQCgC5W0oiIBxDSCAC6WEkj
+	Ih5ASCMA6GIljYh4ACGNAKCLlTQi4gGENAKALlbSiIgHENIIALpYSSMiHkBIIwDoYiWN
+	iHgAIY0AoIuVNCLiAYQ0AoAuVtKIiAcQ0ggAulhJIyIeQEgjAOhiJY2IeAAhjQCgi5U0
+	IuIBhDQCgC5W0oiIBxDSCAC6WEkjIh5ASCMA6GIljYh4ACGNAKCLlTQi4gGENAKALlbS
+	iIgHENIIALpYSSMiHkBIIwDoYiWNiHgAIY0AoIuVNCLiAYQ0AoAuVtKIiAcQ0ggAulhJ
+	IyIeQEgjAOhiJY2IeAAhjQCgi5U0IuIBhDQCgC5W0oiIBxDSCAC6WEkjIh5ASCMA6GIl
+	jYh4ACGNAKCLlTQi4gGENAKALlbSiIgHENIIALpYSSMiHkBIIwDoYiWNiHgAIY0AoIuV
+	NCLiAYQ0AoAuVtKIiAcQ0ggAulhJIyIeQEgjAOhiJY2IeAAhjQCgi5U0IuIBhDQCgC5W
+	0oiIBxDSCAC6WEkjIh5ASCMA6GIljYh4ACGNAKCLlaIRbyF+luGfIPDLiBb4PUYotes2
+	+xMa+RPIX7jm0shZORu31o0kC26jN/YWC27JCwBfO17M72/bp+Wd2LoRJ5mv1Lsjb04l
+	r038hestfCPD65NSJmau7ohuJ3Ifzju3Uxp5AeBrx76Q2dfB1afiVmTdiBXLlD63BhNv
+	TievDV24nn8izWfTu5u6u5cKB1d3RAuG03vuRXs4mXr+zDhqCPisp/ejfuv4IJdwjN9P
+	Wv4rw05kS7V6e3A7Go8nHEUExuPR3bDXOqvub0ZMfc2IboZThXLt4qp90+31OYoI9Hrd
+	m+vmiVvc8Vdk9dAKBDTDim7mS9XPZ5eNRpOjikCjfnH67+Hb7EbowYosldjRVHbv3Yej
+	StXlqCJQrRyW3+a3E2FTX18R/wTztyQcT29n3+QLHHUE8rmdrWTM35BHQpZKTDsci28k
+	/UlxFBBYkk4m4tGQFXxKiK9EN4KW7TghjjoCjm2Zz/j48eilabpucBQS0HVde+LAWnsQ
+	5hsSIAESIAESIIH/L4HvkRHshAplbmRzdHJlYW0KZW5kb2JqCjY0IDAgb2JqCjEyNDMK
+	ZW5kb2JqCjYxIDAgb2JqCjw8IC9MZW5ndGggNjIgMCBSIC9UeXBlIC9YT2JqZWN0IC9T
+	dWJ0eXBlIC9JbWFnZSAvV2lkdGggMjM2IC9IZWlnaHQgODQgL0NvbG9yU3BhY2UKL0Rl
+	dmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnGtz6VAUhuUekYhI0Wg5Tl2qWjHD
+	cavSoVKl4tII9f//yEnq9LBbvnfvWe8HY5sxs961nsiYeVcCARB0ADoAHYAO/JwOUDTN
+	kCOaok61lqIZjhfEICkSBZ5ljtulGE4MKaoWJURaJCxLAksfmS3N8CFVTyQvU2kylLo0
+	4lElyDHfzFKMIOvJTL50Z5oVEmSWb4u5dEKT+K9mKYaXz1IFs95+6PbIULfTqt1lk5rE
+	0egvFM2F9FSx2ulbo5cxGXp5Hj62KjlDDbIoxYyoGoVq13qdzRdLMrSY2+NB27yKyTwy
+	WIoN6RmzY02XK9ddkyHXdRaTQePmIiIyhxDTvJLI1/uTpbvZvL+/b/GX52KzWc1H3UpG
+	lxCIaUFNltrWbOU7JcLrduuZXb+99v/k4jJ3eMEyonZ59zCau4RM9YNLz6xjD5uFhMIj
+	XoNayuy+LFxShrozu1nNrHbRCH/xGk2bvfHS84r/pbp38OH15ojXCple7095Xe97QsI7
+	f66+V+HwBssEo2l/ruR5fb6/SarglQRy9x48hmGucL3ugcDwHTAM9xwMsUVKBoaBYQQI
+	DA/AMDCMIbZIycAwMIwAgeEBGAaGMcQWKRkYBoYRIDA8AMPAMIbYIiUDw8AwAgSGB2AY
+	GMYQW6RkYBgYRoDA8AAMA8MYYouUDAwDwwgQGB48hj9ya0gw/DO35hIVvdz+94pmaj9z
+	phhO71TJXn7Yz9R+z15qqfIuP3zqm/h97nu1h63rczQ/TIuRi9vO89zPwONn6mjFfpZ/
+	40yfGvmEgmTgaSFsFJtD21kTY9a36i4nj9VsLIR4pTg5nq0+juer9YYYrV3HtjrldBTd
+	46BYKZq6bQ4m8zdnRYgcZ2mPerWCF5VG9nMC/oJO1mz3R69Te0aG7OnE6tVLaR1FOBCg
+	2GAkmSs3HvpPQ4sMDQeP97VSJq4IXxclaU7SjN9Fs9ZotolQq1mvlgvpeFhEtq78bTNv
+	q1lSYxe/svnrIhG6LuSv0oauiOzhYsNusY6iOVFW9Vji3CBC54n4WTQcOr7ETdEsL0qy
+	EiZEihwKCkc2uD9Hy7AcT4w47tRjCP7ZpSjvGRNEyHNy+Pdm5w9eoQPQAejAj+vAX1W0
+	pJsKZW5kc3RyZWFtCmVuZG9iago2MiAwIG9iago4NDIKZW5kb2JqCjY1IDAgb2JqCjw8
+	IC9MZW5ndGggNjYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lk
+	dGggNDAyIC9IZWlnaHQgMjM4IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBv
+	bGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUg
+	Pj4Kc3RyZWFtCngB7ddrU5J7FIZxeTgjB9EUtU0nQx0PNOlWMg9tDfKQiAoIff8vsqGm
+	Aqu7/aKee/Z0rTe9WFOr+V3+oSYmGAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
+	AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
+	BBBAAAEEEPj/CkSCIMqEKhAEkciPfmAiQTSeSKbSTJgCqWQ8Fv1+k0g0nprMFYrTTIgC
+	xal8NpOMBd9pEkQTk4WZ0uJf5UdMeALlhwtz07l0/NtnEokmszOLTyprG9XqCyYsgerm
+	+upSuTSVid9/JZFoIvugvFzd2Ts4PGLCEzjcr22tLy0WB0nGv9+D+ORMeXVr/7hxenbO
+	hCdw9q5+VKs+Xyik7n1uRVOFheWtw8b7q9b1DROewHWreX6yt/l0Njv+SCKxyZkn1f3G
+	5U2n271jwhPodtuti+Pd1cXBIxn92AoSuVJl5/jiptvr9fv9D0w4AgPr3l2ndXpQfTyT
+	iY3+CzhIFhbX9hpXnWEPioST4+OVYZLbi3+2lwYfW6NFoqniXxsHp60uLyTEGp+TtC/f
+	7lZKufEi6WK5enh23eWBhF3kQ7/XbtZrK/O5xNgbSU8/qh6d3wyKhP43+uMP9jpXjVcr
+	C/lvirygiOeHY1hkb/UHRe48f6c/++qXIqP/a48OPrWGb4Qihh8OihjQ5UmKSB7DkiIG
+	dHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2e
+	pIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJyki
+	eQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7D
+	kiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSI
+	AV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCX
+	JykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmK
+	SB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLH
+	sKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwp
+	YkCXJykieQxLihjQ5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ
+	5UmKSB7DkiIGdHmSIpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHmS
+	IpLHsKSIAV2epIjkMSwpYkCXJykieQxLihjQ5UmKSB7DkiIGdHnyS5HIxNeJpqcfvTg6
+	v+n25e9l+TsEflikSpHf4f2zP7Pf73Wa9Vcr8/nE+BspljcPz667fR7Jzwh/8X5QpN2s
+	15ZLubEiQWrq4fr+u1anR5JfLK7/uP5g7m4vT3Yqc9n46BsJkvmF1Vq92b4jiSb8xdtB
+	kF735vzNy2cPJmOjRSLx7NzS1pvzVueux4QqcNe9bTZeb5SL6ejXf2lNTERimenyeu3k
+	onXb7jAhCrTbN813h9uV+XwyGC0yESRypaXq3vHp+8vmFROaQLN5ed44+nutPJMZ+xoZ
+	PpL01OLzzd2D47f1BhOaQL1+8ub19trj2VwyOvo1MnguQTxTXHi6Wt3ere0xoQm8qu28
+	3KiUZ/Opse/14edXJBrPFGYfPl6qrKwyoQmsLFeeleenc6nY+LfIxyRBPJUtzMyW5heY
+	0ATmS3MPpvOZZCy495n1KUkskcpkc3kmRIFcdjKdjN//Dhn2GE4kiMbiCSZUgXh88D6+
+	80A+JRlEGUzAhCcwBP+Mz68IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAA
+	AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC
+	CPwXgX8B0P1liwplbmRzdHJlYW0KZW5kb2JqCjY2IDAgb2JqCjE1ODEKZW5kb2JqCjU1
+	IDAgb2JqCjw8IC9MZW5ndGggNTYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9J
+	bWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMTcwIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5
+	IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxh
+	dGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZfZUhpbAEXpbuYGkcEJxVm0UNFgnKKY4IQ4gChT
+	/v9HbmNdE1DZb5z9kH1erMo2LGstT4M+n44MyIAMyIAMyIAMyIAZA5ZtOzpGDdi2ZY2K
+	a9lOIBgKR3RMGgiHAn7n6yaWEwi78UQypWPQQHJyIhYN+e0vmthO0E2kZ7ILuUUdcwZy
+	83PTqXgk8PmaWE4ols4ubxR2isU9HVMGirvbW2u5mclo4OMtsZxgLJPLFw9Pz8sXOuYM
+	lM+OS9tr2aSXZPj93Q646dxW6axyU72r6ZgzcHd7fXFcXJ9LhD88t5xwYi5fKt881BvP
+	TR1zBp4bT7XL092VqdjwJbH8bnq5eHbz2Gy12x0dcwba7dfGfeVoK+tdksHHlh2Mz2wc
+	Vu6b7W631+v91jFjwHPd7bQa1fPiUjrqH/wEbIcS2cLpTb3V76EiZnK8UfpJXu5/Hax5
+	j63BIk44ubBzXm20dUMM1nhP8vp4dbQxEx8uEknmiuW757YuiOkiv3vd16fr483ZeHDo
+	jkRSi8WLWtMrYvwn+ueB3Vb95mRzbuJTkT0V4fxy9Iucbo0o0uH8TP829U+Rwb/aHe+p
+	1b8jKkL45VARgnSIVBGohzCqCEE6RKoI1EMYVYQgHSJVBOohjCpCkA6RKgL1EEYVIUiH
+	SBWBegijihCkQ6SKQD2EUUUI0iFSRaAewqgiBOkQqSJQD2FUEYJ0iFQRqIcwqghBOkSq
+	CNRDGFWEIB0iVQTqIYwqQpAOkSoC9RBGFSFIh0gVgXoIo4oQpEOkikA9hFFFCNIhUkWg
+	HsKoIgTpEKkiUA9hVBGCdIhUEaiHMKoIQTpEqgjUQxhVhCAdIlUE6iGMKkKQDpEqAvUQ
+	RhUhSIdIFYF6CKOKEKRDpIpAPYRRRQjSIVJFoB7CqCIE6RCpIlAPYVQRgnSIVBGohzCq
+	CEE6RKoI1EMYVYQgHSJVBOohjCpCkA6RKgL1EEYVIUiHSBWBegijihCkQ6SKQD2EUUUI
+	0iFSRaAewqgiBOkQqSJQD2FUEYJ0iFQRqIcwqghBOkSqCNRDGFWEIB0iVQTqIYwqQpAO
+	kSoC9RBGFSFIh0gVgXoIo4oQpEOkikA9hFFFCNIhUkWgHsKoIgTpEKkiUA9hVBGCdIhU
+	EaiHMKoIQTpEqgjUQxhVhCAdIlUE6iGMKkKQDpEqAvUQRhUhSIdIFYF6CKOKEKRDpIpA
+	PYRRRQjSIVJFoB7CqCIE6RCpIlAPYVQRgnSIVBGohzCqCEE6RKoI1EMYVYQgHSJVBOoh
+	jCpCkA6RKgL1EEYVIUiHSBWBegijihCkQ6SKQD2EUUUI0iFSRaAewqgiBOkQqSJQD2FU
+	EYJ0iFQRqIcwqghBOkSqCNRDGFWEIB0iVQTqIYwqQpAOkSoC9RBGFSFIh0gVgXoIo4oQ
+	pEOkikA9hFFFCNIhEhZpw/+qcSwG/hSxfH+PE0kt7l3Umu3eWJh6UWRgVJFcsVx7VhGk
+	bjxbr9t6uj7ZnI0Hh+5IOLmwe171iuiSjMf7qFft9Xrd16ero/zMcBE7lJgv/Litt7re
+	dyjKKH1j+HdPd+flofJ9fToWGLwjdnBiNn90+fjS6ScZA1gv+bUB74Z028935f3ldNQ/
+	WMQKuJnV/fPb+mu7o2PUQLvVfLg6LixMhp2/n7R8PsuJTM5vHf6sPjWaLzomDTTrD9dn
+	+2vT8aA9WMRnB2OZpe3D8nX1/kHHoIH72u3lj2/5+WRk6KHVvyShienlQumk/LNSudQx
+	ZKBS+XVxdlTML6TdD1fE57P94Ymp3Hqh+K10cPBdx4yBg4PS3s7mSjYVCzqD7+v955fl
+	JYmnpucXl1dX13RMGVhdWcrNZRLu5yBvSYLReCKVzkzpmDOQSScn3HDg0w15e5f3rkkw
+	HIm6bkzHkAHXdaORUMCxPz6y3j92Wbbj+P0BHWMG/H6/l2NUj/+7WDomDbzfBn2VARmQ
+	ARmQARmQARkwYOA/LaDxbQplbmRzdHJlYW0KZW5kb2JqCjU2IDAgb2JqCjE0NzYKZW5k
+	b2JqCjU3IDAgb2JqCjw8IC9MZW5ndGggNTggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0
+	eXBlIC9JbWFnZSAvV2lkdGggMzM2IC9IZWlnaHQgNzAgL0NvbG9yU3BhY2UKL0Rldmlj
+	ZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVy
+	IC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt3NlS4lAQBmCykbAEBGTVuCFLKcRSRxEV
+	HRRUlIAIAX3/F5lEaigCcuq0V1Pj/19YVprm4quOqHU6Ph8CAQhAAAIQgMD/LSCIooQQ
+	BERREFaNhCBKil/VAgi/gKYqsvS1qCApWkiPxuIIt0BsLRIOqrL4hago+UPRRDq3aWwh
+	vALGRjYV1wPK8ogKkhpO5HYKBxXTPEL4BMzqYTlvpNeCyuKECpI/vG4UzbP6deMG4RVo
+	XNVODvO5mAPq/VQSlVDCKJ9cNduPTx2EV+DpoXVTM/ezUW3hjpe0aLZ40mi/9PqvA4RX
+	4LVvde7q1d1k2DugghxK7JhX7e5gZNtjhFfAtof95+Z5OecM6PwNL/r1dOGs+TywJ5P3
+	9/cPhEfAkZqMR/3Ha3M7EZTnf2cS1WjuoN7ujVxNePJgfr7GBX17/n2ad274eU9Ji21W
+	rh/7NqaT2/Iv6LB7f15I617PQMwwG0+vNoaT5vnxPhlarVopo/s98xmIb5k3nYHjSXy/
+	H//yyajXvihlI0ueR/D8znC4nvXyCs/xd97xZ/fMPOf/QpKc+92dT3iShwOeZDJmAzyZ
+	POQiPMlkzAZ4MnnIRXiSyZgN8GTykIvwJJMxG+DJ5CEX4UkmYzbAk8lDLsKTTMZsgCeT
+	h1yEJ5mM2QBPJg+5CE8yGbMBnkwechGeZDJmAzyZPOQiPMlkzAZ4MnnIRXiSyZgN8GTy
+	kIvwJJMxG+DJ5CEX4UkmYzbAk8lDLsKTTMZsmHkunlecnq9j9qK4LLDSc3r+c7kBVxgC
+	zoHvkdW6KGUWz3/GjOr0fDKjGaUlAcfTPZ9cTHvPJ4va2sbh1UPf3UdY6sGFVQLu7sb4
+	rXt3Vkh59xFENZIt11rWcAzQVXhfXHc4J/agc3u8tx7y7MsISjiVP7nt9EfjCUIQGNtv
+	VvuyYsQCnn0uQQ7GjcPa3XP/bThCuAWGw4H10DgtZCLq/HFvn89dkMub9ebjS9fqIZwC
+	ltXttG9+HRiJoGf9yOcT5MBabr96ft28b7URToFW6+728vRgO6mrC/vFPlEJxrK7ZfP0
+	vFZHOAUuamfHlYKRjGieTyN3M9Z5ekgwmtzYzhdKZYRToFQs7BmZuK7J3p+en6CiooWj
+	iWQ6k0U4BTLp1Ho8suKBLIIo+7VgWI8g3AJ6OBRQv3gay3QX3nkAk6z4EYKAojgPC5r/
+	z9JUcvZVcCIivAIu18wO30AAAhCAAAT+GYE/v2FL9wplbmRzdHJlYW0KZW5kb2JqCjU4
+	IDAgb2JqCjkyNQplbmRvYmoKNTkgMCBvYmoKPDwgL0xlbmd0aCA2MCAwIFIgL1R5cGUg
+	L1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA1MDIgL0hlaWdodCA0OTAgL0Nv
+	bG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21w
+	b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt2FtTk2cYRmHy
+	ZUtIQEBkY6NtKcK4iVOtIlWwKKhYIiKEpP//jzRpp50G9faY1fWe9OBpZ3qvyw9tp6Z8
+	FrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGAB
+	C1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCA
+	BSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jA
+	AhawgAUsYIGrXaBUFGUfrUBRlEpf/XVZKsrVWr0x7YMVaNSrlfJX3EvlamOmPTe/4GMV
+	mL8222rWK8WX3ItybWZucXntu84tH6pA5+bqjYX2dPULn3upXG8trn2/cfd+t/vQByrQ
+	fXBva72zfK1Z/exrL5VrreudO90nOy9293yoArvPtx/dW1+bH7Ff+jNdUZ1Z7Gw9er5/
+	+PbdkQ9V4N2bg73t7k+rc43LP+PLjbnVO492D3//cPLx1Icq8PGkd/Rq58EPS61LH3up
+	MrP4fff54fHpeb9/4UMV6PfPTt7vP91aG33sEz/ii1p7eePJ/vvT/mAwHA7/8GEKjDgH
+	F+cnb190by82KxP/9VbU59bu7hx+OB+bq44h/2vImP3T+98er49+xE+olxvz391/8fak
+	75fOEv+H/ez49dON5fYl9en5Tnf33ce+HzpQ/Y/h4Kx3sL250q5NfuvTC7e6e0enI3Xi
+	6v/9psH5h8Nnm6uzn6s/VB37q2OsvrP1NfUL7O7/97B/1Sf+71x59BN+/K2rzvzVoTrT
+	Na9SPfdhXlVnuuZVquc+zKvqTNe8SvXch3lVnemaV6me+zCvqjNd8yrVcx/mVXWma16l
+	eu7DvKrOdM2rVM99mFfVma55leq5D/OqOtM1r1I992FeVWe65lWq5z7Mq+pM17xK9dyH
+	eVWd6ZpXqZ77MK+qM13zKtVzH+ZVdaZrXqV67sO8qs50zatUz32YV9WZrnmV6rkP86o6
+	0zWvUj33YV5VZ7rmVarnPsyr6kzXvEr13Id5VZ3pmlepnvswr6ozXfMq1XMf5lV1pmte
+	pXruw7yqznTNq1TPfZhX1ZmueZXquQ/zqjrTNa9SPfdhXlVnuuZVquc+zKvqTNe8SvXc
+	h3lVnemaV6me+zCvqjNd8yrVcx/mVXWma16leu7DvKrOdM2rVM99mFfVma55leq5D/Oq
+	OtM1r1I992FeVWe65lWq5z7Mq+pM17xK9dyHeVWd6ZpXqZ77MK+qM13zKtVzH+ZVdaZr
+	XqV67sO8qs50zatUz32YV9WZrnmV6rkP86o60zWvUj33YV5VZ7rmVarnPsyr6kzXvEr1
+	3Id5VZ3pmlepnvswr6ozXfMq1XMf5lV1pmtepXruw7yqznTNq1TPfZhX1ZmueZXquQ/z
+	qjrTNa9SPfdhXlVnuuZVquc+zKvqTNe8SvXch3lVnemaV6me+zCvqjNd8yrVcx/mVXWm
+	a16leu7DvKrOdM2rVM99mFfVma55leq5D/OqOtM1r1I992FeVWe65lWq5z7Mq+pM17xK
+	9dyHeVWd6ZpXqZ77MK+qM13zKtVzH+ZVdaZrXqV67sO8qs50zatUz32YV9WZrnmV6rkP
+	86o60zWvUj33YV5VZ7rmVarnPsyr6kzXvEr13Id5VZ3pmlepnvswr6ozXfMq1XMf5lV1
+	pmtepXruw7yqznTNq1TPfZhX1ZmueZXquQ/zqjrTNa9SPfdhXlVnuuZVquc+zKvqTNe8
+	SvXch3lVnemaV6me+zCvqjNd8yrVcx/mVXWma16leu7DvKrOdM2rVM99mFfVma55leq5
+	D/OqOtM1r1I992FeVWe65lWq5z7Mq+pM17xK9dyHeVWd6ZpXqZ77MK+qM13zKtVzH+ZV
+	daZrXqV67sO8qs50zatUz32YV9WZrnmV6rkP86o60zWvUj33YV5VZ7rmVarnPsyr6kzX
+	vEr13Id5VZ3pmlepnvswr6ozXfMq1XMf5lV1pmtepXruw7yqznTNq1TPfZhX1ZmueZXq
+	uQ/zqjrTNa9SPfdhXlVnuuZVquc+zKvqTNe8SvXch3lVnemaV6me+zCvqjNd8yrVcx/m
+	VXWma16leu7DvKrOdM2rVM99mFfVma55leq5D/OqOtM1r1I992FeVWe65lWq5z7Mq+pM
+	17xK9dyHeVWd6ZpXqZ77MK+qM13zKtVzH+ZVdaZrXqV67sO8qs50zatUz32YV9WZrnmV
+	6rkP86o60zWvUj33YV5VZ7rmVarnPsyr6kzXvEr13Id5VZ3pmlepnvswr6ozXfMq1XMf
+	5lV1pmtepXruw7yqznTNq1TPfZhX1ZmueZXquQ/zqjrTNa9SPfdhXlVnuuZVquc+zKvq
+	TNe8SvXch3lVnemaV6me+zCvqjNd8yrVcx/mVXWma16leu7DvKrOdM2rVM99mFfVma55
+	leq5D/OqOtM1r1I992FeVWe65lWq5z7Mq+pM17xK9dyHeVWd6ZpXqZ77MK+qM13zKtVz
+	H+ZVdaZrXqV67sO8qs50zatUz32YV9WZrnmV6rkP86o60zWvUj33YV5VZ7rmVarnPsyr
+	6kzXvEr13Id5VZ3pmlepnvswr6ozXfMq1XMf5lV1pmtepXruw7yqznTNq1TPfZhX1Zmu
+	eZXquQ/zqjrTNa9SPfdhXlVnuuZVquc+zKvqTNe8SvXch3lVnemaV6me+zCvqjNd8yrV
+	cx/mVXWma16leu7DvKrOdM2rVM99mFfVma55leq5D/OqOtM1r1I992FeVWe65lWq5z7M
+	q+pM17xK9dyHeVWd6ZpXqZ77MK+qM13zKtVzH+ZVdaZrXqV67sO8qs50zatUz32YV9WZ
+	rnmV6rkP86o60zWvUj33YV5VZ7rmVarnPsyr6kzXvEr13Id5VZ3pmlepnvswr6ozXfMq
+	1XMf5lV1pmtepXruw7yqznTNq1TPfZhX1ZmueZXquQ/zqjrTNa/6V7009Z9Xnl649XDv
+	6LQ/zP+016tZ4OvqXdWvJuk3/62Hw8F57+DZ5sps7dK3Pt95sPvuY3/ox/7NiFfubxip
+	n/UOtu8styfVi8a1m/eevzk5H8h+5VC/8S88HL2LT8evnmzcaFUnvvWiPru6tX3QO7uQ
+	/RsRr9x5hD7onx69/PnH6zOVCfVStXVj/dHLo5Pzi4GPVuCi/6l3+Ov9zvx0+T9/gp+a
+	KlWaC51726/en3w6O/exCpydnfbe7D7eWJmtFxPqU0Wtvbze3dl/+/tx74OPVKDXOz46
+	3PvlbmexOfnb+vhjn7629tODpy/2Xx8c+kgFDg5evfz18d3bS+16eeK39dF3X1Sb86s/
+	bHUfP93e8ZEKPNt+8vP9jc7SbGPyz3LjH/alcrU5t3Tz9vrG5paPVGDzzsaPnZWFdqNy
+	6Xf1v9iLaqM1t7i0vLLqIxVYWb5xfWG2Wa8Ul3++/81eqTWarfasj1Wg3ZqZrlc/+z19
+	bD5+paJcqdZ8tALV6ug7/9KH/jf7CH70Ch+qwNj0H1//agELWMACFrCABSxgAQtYwAIW
+	sIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAEL
+	WMACFrCABSxgAQtYwAIWsIAFLGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAF
+	LGABC1jAAhawgAUsYAELWMACFrCABSxgAQtYwAIWsIAFLGABC1gAUuBPhGXoYQplbmRz
+	dHJlYW0KZW5kb2JqCjYwIDAgb2JqCjI4MTIKZW5kb2JqCjUxIDAgb2JqCjw8IC9MZW5n
+	dGggNTIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNTAy
+	IC9IZWlnaHQgODgyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0
+	cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
+	ZWFtCngB7ddZd1QFGkbhVCojGYCAgTBEBg2DMggyCwgyyBQIJIT+/3+kK3brMiDbu+7F
+	dp8bLz5dK+9+cirl2FhPBSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQ
+	gQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWo
+	QAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpU
+	oAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUq
+	UIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEK/M8LDAaD8R5ZgREq/CIN
+	xocTk1NT0z2qAlNTkxPD8c/AD8Ynpmbn5hcW9/aYCiwuLszvmZ4c/iX7YDg5O7/v4PLh
+	lZUjPaICKyuHvlraOzc98Rev+2A4tWff8rGT35w5d+58j6fAuXNn106vrhxYmJkY/+Sv
+	+/jk3NKRU+cv/3jj1u0eVYFb169eWFtdXpyZ+PhDfjAxu//Itxdv3H3w6PGTHlOBx49/
+	+fnO1e9OLC9Mf/y3fTi9cOj0pVsPn754tb7+usdTYH19/eXzx/eunV89MDe5+2UfTOxZ
+	Wv3+5sPnr99ujp6tHk2BEee7jVdP711dW1mc3v2XfTA5v/zN1fvP3my+3x49H3o0BXY8
+	37979fj2hdWl2Yld3+fGpxdXzt589Ordjvi/ekwFRr+/21sbz+5fOXVwbvf3ufGZfUe/
+	u/P09dZ25ibxnS07n1rv3718eO3b5fndf9iHs/uPX7j765ut3nQb+m/u2+9ePbqxdmhh
+	atfXueHs0urFe882tnrVneqb649unjm8+Kn6pdSF4v+ZtL25/vjW2ZXPqL/X7v5nD0v9
+	n+j/h/qu/2Hf+bu+8wnfu+78nUjd6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOV
+	V6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+
+	zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWn
+	K69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XO
+	fZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvq
+	TldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69K
+	nfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX
+	1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTlde
+	lTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4
+	r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2u
+	vCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3
+	cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7
+	XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp1
+	7uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5T
+	d7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV
+	6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8
+	pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ry
+	qtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzH
+	eU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu50
+	5VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5
+	j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d
+	6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWp
+	cx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/Oa
+	utOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqr
+	Uuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/n
+	NXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOV
+	V6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+
+	zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWn
+	K69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XO
+	fZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvq
+	TldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69K
+	nfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX
+	1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTlde
+	lTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4
+	r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2u
+	vCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3
+	cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7
+	XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp1
+	7uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5T
+	d7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV
+	6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8
+	pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ry
+	qtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzH
+	eU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu50
+	5VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5
+	j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d
+	6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWp
+	cx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/Oa
+	utOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqr
+	Uuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/n
+	NXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOV
+	V6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+
+	zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWn
+	K69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XO
+	fZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvq
+	TldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69K
+	nfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX
+	1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTlde
+	lTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4
+	r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV6XOfZzX1J2u
+	vCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3
+	cV5Td7ryqtS5j/OautOVV6XOfZzX1J2uvCp17uO8pu505VWpcx/nNXWnK69Knfs4r6k7
+	XXlV6tzHeU3d6cqrUuc+zmvqTldelTr3cV5Td7ryqtS5j/OautOVV7H6Fv/HXb/QAn+o
+	D8b+9Axnl1Yv3Xu2sfXhC53Vj40FPqt+/OLdZ2+2PnzIHft9kccP25uvHt08c3hhave7
+	PrP/2IWfnqb+RaL+zQ89epO337365fraoYXJXerj03uPnr/9ZH1ze/Sv9Lb/TcYv7DwS
+	ff/2xYMfv1me/0h9avHw2vWHL9++32H/wlb142KB0Zu+vfXm17uXTxzYM7HrXR9Mzh08
+	efmnJ+vvtt732ApsbW68+OXG+WP7ZoZ/+gY/NjYYzu47evba/acvX2+87ZEV2Fh//ujO
+	5dPLC1Pju9THxqfmD3793bW7j54+f9HjKvD82ZMHt39YO7p/dvcH/M7LPr24fOLclZs/
+	3X8weh72SAqMMH++d+f6xbVjB+Y+ftXHxsYnZha/On763MUfrlztURW4cun7MyePLM1P
+	DXd9l9v5sB+M2OeXlo+unjh16nSPqMCpk18fXzm4d+4v0H9jn9qzsHfpwMGvelQFDh7Y
+	vzg3M/npm/7bV7vR6z41M7tnrkdWYM/s9ORw/JOP99+/zw/Gh8OJiYnJHlGBEeiI/LPm
+	/7Uf9MgK/P5S988KVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahA
+	BSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSg
+	AhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQ
+	gQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWo
+	QAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClTg/1ng3++OKP0KZW5kc3RyZWFtCmVu
+	ZG9iago1MiAwIG9iago0NTczCmVuZG9iagozNyAwIG9iago8PCAvVHlwZSAvRXh0R1N0
+	YXRlIC9jYSAwLjcgPj4KZW5kb2JqCjM4IDAgb2JqCjw8IC9UeXBlIC9FeHRHU3RhdGUg
+	L0NBIDAuNyA+PgplbmRvYmoKNjcgMCBvYmoKPDwgL0xlbmd0aCA2OCAwIFIgL04gMyAv
+	QWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
+	CngB1VlnWBTNsu6ZTcCypCXnHEVylpwkSA6CSFrSknMOSlKCIIiAgKCACCKCGAgCImAC
+	RIKAEQmiIKhgAgThDur3fec+55x/98+d55med6uqq2unerqn3gGAbdktONgfpgMgIDA8
+	1MpQh/eggyMv7gWgBDSAEYgBSjdSWLC2hYUp+K/H9wkA7SrHJHd9/Vez/6yg9/AMIwEA
+	WSBqd48wUgCCrwMA65CCQ8MBQK0j8uGo8GAEox8gmDEUCRDBL3ex92+8sovdf2EM+peN
+	jZUuABhWACio3dxCvQEgCCJy3kiSN+KHoAcAliHQgxwIAPEggjVIPm4eALAVIzZ7AgKC
+	dnEfgkXd/8WP979gNzf3v326uXn/jX//F6QnMrAeOSzY3y3m14//yybAPwK5X78OBqSl
+	DvQ3280NM3IueLjpmSBXTuTcDvb/lTPEBmL3DLS1RmS7eE+gu5n5H6zhFWpghWCkL2QR
+	HK6zi5F7BnkFh1vY/JEnxvromiGYGpEXeIbp/+XnnK+b8W7OaBB5c2iElS2CBRHcHRZp
+	rY9gZEZBb2J9bOz/2Hz18NT7I4dhL7KB0W8bmIEcbrQ7FiOSc36/IJPdGJCxYEVgAvyB
+	J4gAoUgbCCSBKdAFen9aSeAF3BBNJKILA37gLYIDkB5BSJ8gBPP+sdP9N4nBr37eSL//
+	7ZEXkBDbiL/H/D0aLzLmXz7JwAPBf8ndkDF2dbvRhbmQk/8Z8y+LXX+/opGul16U3vor
+	JrQwWhatgNZBq6M10CqAF82MZgeSaHm0MlobrYlWQ3QqwAC8QTx7/xXjrv+AZq/I4qAY
+	VTsfRLv7393/0gK7X9bkv3//WwSAPLTcsvxXBACEe0YjzwEAukHBMaFkb59wXm3kyfXc
+	w2sUSNq7h1dWWkZmV/3/5thds34H+8Xq11oEMT/+RxbQCIAyGZmPzv/I3E8C0C6JPPv1
+	/8iEC5G1wReAAUFSRGjkb3/o3QsGUAFaZIayAW4gAESR+ywLFIEa0AL6wBiYAxvgAJyR
+	+eODzMFQEAXiwVGQDrLASXAalIAKUAVqQQNoBi2gA9wB98AAGAbj4AWYBvNgCayA72AT
+	giAcRICIEBvEAwlBEpAspAxpQPqQKWQFOUCukDcUCEVA8VAKlAXlQyXQeagOugq1QXeg
+	h9AI9AyagRahz9APGAVTw4wwFywMS8HKsDZsAtvAh2FvOASOhVPhHLgYroQvwzfhO/AA
+	PA5Pw0vwNxRA4VHMKD6UJEoZpYsyRzmivFChqERUJqoQVYm6gmpH3UeNoaZRy6gNNBZN
+	RPOiJZF5uh9tiyahQ9CJ6Gx0CboWfRPdhx5Dz6BX0NsYAoYTI4FRxRhhDmK8MVGYdEwh
+	pgZzA3MXM46Zx3zHYrHMWBGsEnY/1gHri43DZmPPYhux3dgR7Bz2Gw6HY8NJ4NRx5jg3
+	XDguHXcGdxl3GzeKm8etU+ApeChkKQwoHCkCKZIpCikuUXRRjFK8o9ikpKMUolSlNKf0
+	oIyhzKWspmynfEw5T7lJRU8lQqVOZUPlS3WUqpjqCtVdqpdUX/B4PD9eBW+JJ+OP4Ivx
+	TfgH+Bn8BjUDtTi1LrUTdQR1DvVF6m7qZ9RfCASCMEGL4EgIJ+QQ6gi9hCnCOg2RZi+N
+	EY0HTRJNKc1NmlGaj7SUtEK02rTOtLG0hbTXaB/TLtNR0gnT6dK50SXSldK10U3SfaMn
+	0svQm9MH0GfTX6J/SL/AgGMQZtBn8GBIZahi6GWYI6KIAkRdIomYQqwm3iXOM2IZRRiN
+	GH0ZsxgbGIcYV5gYmOSZ7JiimUqZOpmmmVHMwsxGzP7MuczNzBPMP1i4WLRZPFkyWK6w
+	jLKssXKwarF6smayNrKOs/5g42XTZ/Njy2NrYXvFjmYXZ7dkj2IvZ7/LvszByKHGQeLI
+	5GjmeM4Jc4pzWnHGcVZxDnJ+4+LmMuQK5jrD1cu1zM3MrcXty13A3cW9yEPk0eAh8xTw
+	3OZ5z8vEq83rz1vM28e7wsfJt58vgu883xDfJr8Ivy1/Mn8j/ysBKgFlAS+BAoEegRVB
+	HsEDgvGC9YLPhSiFlIV8hIqE7gutCYsI2wsfE24RXhBhFTESiRWpF3kpShDVFA0RrRR9
+	IoYVUxbzEzsrNiwOiyuI+4iXij+WgCUUJcgSZyVG9mD2qOwJ3FO5Z1KSWlJbMlKyXnJm
+	L/Ne073Je1v2fpQSlHKUypO6L7UtrSDtL10t/UKGQcZYJlmmXeazrLgsSbZU9okcQc5A
+	LkmuVW5VXkLeU75c/qkCUeGAwjGFHoWfikqKoYpXFBeVBJVclcqUJpUZlS2Us5UfqGBU
+	dFSSVDpUNlQVVcNVm1U/qUmq+aldUlvYJ7LPc1/1vjl1fnU39fPq0xq8Gq4a5zSmNfk0
+	3TQrNWe1BLQ8tGq03mmLaftqX9b+qCOtE6pzQ2dNV1U3QbdbD6VnqJepN6TPoG+rX6I/
+	ZcBv4G1Qb7BiqGAYZ9i9H7PfZH/e/kkjLiOSUZ3RirGScYJxnwm1ibVJicmsqbhpqGn7
+	AfiA8YFTB16aCZkFmrWYA3Mj81PmryxELEIsblliLS0sSy3fWslYxVvdtyZau1hfsv5u
+	o2OTa/PCVtQ2wrbHjtbOya7Obs1ezz7ffvqg1MGEgwMO7A5kh1ZHnKOdY43jt0P6h04f
+	mndScEp3mjgscjj68ENndmd/504XWhc3l2uuGFd710uuW27mbpVu39yN3MvcV0i6pCLS
+	koeWR4HHoqe6Z77nOy91r3yvBW9171Peiz6aPoU+y2Rdcgl51Xe/b4Xvmp+530W/HX97
+	/8YAigDXgLZAhkC/wL4g7qDooJFgieD04OkQ1ZDTISuhJqE1YVDY4bDWcEbk5XAwQjQi
+	LWImUiOyNHI9yi7qWjR9dGD0YIx4TEbMu1iD2Atx6DhSXE88X/zR+JkE7YTziVCie2JP
+	kkBSatL8EcMjtUepjvodfZQsnZyf/DXFPqU9lSv1SOpcmmFafTpNemj65DG1YxXH0cfJ
+	x4cy5DLOZGxnemT2Z0lnFWZtZZOy+0/InCg+sZPjlTOUq5hbfhJ7MvDkRJ5mXm0+fX5s
+	/typA6duFvAWZBZ8Pe1y+mGhfGFFEVVRRNF0sWlx6xnBMyfPbJX4lIyX6pQ2lnGWZZSt
+	nfU4O1quVX6lgqsiq+LHOfK5p+cNz9+sFK4srMJWRVa9rbarvn9B+UJdDXtNVs3Pi4EX
+	p2utavvqlOrqLnFeyq2H6yPqFy87XR5u0GtovSJ55Xwjc2NWE2iKaHp/1fXqRLNJc881
+	5WtXrgtdL7tBvJF5E7oZc3OlxadlutWhdaTNuK2nXa39xq29ty528HWUdjJ15nZRdaV2
+	7dyOvf2tO7h7+Y73nbkel54XvQd7n/RZ9g3dNbn74J7Bvd772vdvP1B/0PFQ9WFbv3J/
+	y4DiwM1BhcEbjxQe3RhSHLr5WOlx67DKcPvIvpGuUc3RO2N6Y/eeGD0ZGDcbH5mwnXg6
+	6TQ5/dTj6cIz/2erzyOfb7448hLzMvMV3avCKc6pytdirxunFac7Z/RmBmetZ1/MkeaW
+	3oS92ZpPfUt4W/iO513dguxCx6LB4vD7Q+/nl4KXNpfTP9B/KPso+vH6J61PgysHV+ZX
+	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
+	43HLq7alWxtdVN28Pap9B+/FPCjtbx8cHnox/HR08EnHxOWnZ5/nvTw2lTQdMxv1Jvpt
+	3EL0+8PLzB9qPrGskFerPo9/WfvG8l1uzWI9bOPMj0dbuJ+W29V/8o8FBMCCPP0yQAfh
+	l3xAAihAOKT7YBbsQFzQPugwkvvz0D3kLZMBVoVJ8Am4FZ5HEVHaCHNThZpAUyLsYgT6
+	Mnoew4M5hCnGTCCMiz22BDuFE8D54q7htimMKYopFhDG5ATlHJLzAqoVvDm+iZpIHUM9
+	SzAjdNJI01yg5aEto+Omq0Z4iz4GFyKM5NueCcd0izmcRZplhfU6WwK7EQcrxzJnH9c5
+	7iQeEq8pnwq/uACfII8Qn7CYiKKokZiLeIxE0Z52yVkpBmljmXTZXnmMgqVigzJRJUl1
+	dR9ZfUHTX+u7Troep367oYsR3rjDlGyGMc+yBFZB1q9szex6kD2p9ZCKU7ezmcuMWzSJ
+	1qPKS967m2ziO+lPClgNOhrCFNoYfiBiJepMjHEcFN+aSEraPpqTwppamS55rDPDJnM9
+	+0pO4EnxvLFTvgVfCiOKvp2JKtkqSy9nrKg5r1Y5Vh1QQ3Wxtm7/pcXL2VfkG99cPX/N
+	/4ZeC38bun2xY6Srs7uhp7Kv5F7Bg7z+3MHcoazhhFHnJ9Lj3yabnwW8EHv5durCtNes
+	+NzqfMe7tEW996vLxz98/mS0kr3a8vnVl+WvG9/mvj9cy1/ft/52I3Vj40fgj7nNg5u3
+	txi3yFtdPxl/kn92bVNsW2wXb7/eEdkJ2mnZzX+Yl5zs7u4BIGodhH6c2tn5IgwALh+A
+	n3k7O5uVOzs/q5BiA/kG0u3/+3vFrjEW4dzLbu2i/3T8D+gdk/4KZW5kc3RyZWFtCmVu
+	ZG9iago2OCAwIG9iago1OTUzCmVuZG9iago1MCAwIG9iagpbIC9JQ0NCYXNlZCA2NyAw
+	IFIgXQplbmRvYmoKNjkgMCBvYmoKPDwgL0xlbmd0aCA3MCAwIFIgL04gMSAvQWx0ZXJu
+	YXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AYVS
+	T0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1bldKiGGffuqOzM9Ob2TXFkwRdojx1
+	D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k73/v9/X7fe0RtnabvOylBVHNDlSul
+	p25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS2LLex7V2+/Y9tZVlYCHqLba3EPoh
+	kWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw09GcdKWyLZFT5qIoKq9iO0mu+/m5
+	xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9fVPZsNRSnDeOcSEMaKfKu1d8rTMcR
+	kSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCoibXpspkdhX0AdirL7BDwBejxsmIP
+	54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDOFK7F8dqKH14tAUP3VCNojHNNxNPX
+	OXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd+67qJe57AnfT4zvRmzkLXKAcSXKx
+	FdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3HtURG2ejUoFWeo1Xxk/jufHF+GVs
+	GM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFWcWUL3f/HMoSP2Sc5psHToVlYa9h2
+	5A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwluktUbinU6j2DSqwcK9gAdnCSxCxa
+	HLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgpKBPNs0RmlLFbo+TdeNv9ZpERnzg6
+	vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJ
+	z8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZgplbmRzdHJlYW0KZW5k
+	b2JqCjcwIDAgb2JqCjcwNAplbmRvYmoKMjYgMCBvYmoKWyAvSUNDQmFzZWQgNjkgMCBS
+	IF0KZW5kb2JqCjcxIDAgb2JqCjw8IC9MZW5ndGggNzIgMCBSIC9OIDMgL0FsdGVybmF0
+	ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AYVUz2sT
+	QRT+Nm6p0CIIWmsOsniQIklZq2hF1Db9EWJrDNsftkWQZDNJ1m426+4mtaWI5OLRKt5F
+	7aEH/4AeevBkL0qFWkUo3qsoYqEXLfHNbky2perAzn7z3jfvfW923wANctI09YAE5A3H
+	UqIRaWx8Qmr8iACOoglBNCVV2+xOJAZBg3P5e+fYeg+BW1bDe/t3snetmtK2mgeE/UDg
+	R5rZKrDvF3EKWRICiDzfoSnHdAjf49jy7I85Tnl4wbUPKz3EWSJ8QDUtzn9NuFPNJdNA
+	g0g4lPVxUj6c14uU1x0HaW5mxsgQvU+QprvM7qtioZxO9g6QvZ30fk6z3j7CIcILGa0/
+	RriNnvWM1T/iYeGk5sSGPRwYNfT4YBW3Gqn4NcIUXxBNJ6JUcdkuDfGYrv1W8kqCcJA4
+	ymRhgHNaSE/XTG74uocFfSbXE6/id1ZR4XmPE2fe1N3vRdoCrzAOHQwaDJoNSFAQRQRh
+	mLBQQIY8GjE0snI/I6sGG5N7MnUkart0YkSxQXs23D23UaTdPP4oInGUQ7UIkvxB/iqv
+	yU/lefnLXLDYVveUrZuauvLgO8XlmbkaHtfTyONzTV58ldR2k1dHlqx5erya7Bo/7FeX
+	MeaCNY/Ec7D78S1flcyXKYwUxeNV8+pLhHVaMTffn2x/Oz3iLs8utdZzrYmLN1abl2f9
+	akj77qq8k+ZV+U9e9fH8Z83EY+IpMSZ2iuchiZfFLvGS2EurC+JgbccInZWGKdJtkfok
+	1WBgmrz1L10/W3i9Rn8M9VGUGczSVIn3f8IqZDSduQ5v+o/bx/wX5PeK558oAi9s4MiZ
+	um1Tce8QoWWlbnOuAhe/0X3wtm5ro344/ARYPKsWrVI1nyC8ARx2h3oe6CmY05aWzTlS
+	hyyfk7rpymJSzFDbQ1JS1yXXZUsWs5lVYul22JnTHW4coTlC98SnSmWT+q/xEbD9sFL5
+	+axS2X5OGtaBl/pvwLz9RQplbmRzdHJlYW0KZW5kb2JqCjcyIDAgb2JqCjczNwplbmRv
+	YmoKOCAwIG9iagpbIC9JQ0NCYXNlZCA3MSAwIFIgXQplbmRvYmoKNzMgMCBvYmoKPDwg
+	L0xlbmd0aCA3NCAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAv
+	RmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXU
+	Nv0RYmsM2x+2RZBkM0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct
+	8c1uTLal6sDOfvPeN+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4k
+	BkGDc/l759h6D4FbVsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j
+	2PLsjzlOeXjBtQ8rPcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9
+	T5Cmu8zuq2KhnE72DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19Phg
+	Fbcaqfg1whRfEE0nolRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3
+	VlHheY8TZ97U3e9F2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRq
+	u3RiRLFBezbcPbdRpN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZ
+	uRoe19PI43NNXnyV1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz
+	6kuEdVoxN9+fbH87PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikx
+	JnaK5yGJl8Uu8ZLYS6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJU
+	ifd/wipkNJ25Dm/6j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmuj
+	fjj8BFg8qxatUjWfILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxaz
+	mVVi6XbYmdMdbhyhOUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0
+	cmVhbQplbmRvYmoKNzQgMCBvYmoKNzM3CmVuZG9iagozOSAwIG9iagpbIC9JQ0NCYXNl
+	ZCA3MyAwIFIgXQplbmRvYmoKNCAwIG9iago8PCAvVHlwZSAvUGFnZXMgL01lZGlhQm94
+	IFswIDAgNjEyIDc5Ml0gL0NvdW50IDEgL0tpZHMgWyAzIDAgUiBdID4+CmVuZG9iago3
+	NSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvT3V0bGluZXMgMiAwIFIgL1BhZ2VzIDQg
+	MCBSIC9WZXJzaW9uIC8xLjQgPj4KZW5kb2JqCjQ5IDAgb2JqCjw8IC9MZW5ndGggNzYg
+	MCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0Jp
+	dHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAx
+	IF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9G
+	bGF0ZURlY29kZSA+PgpzdHJlYW0KeAGlwoVSQlEAQMG/tru7u7HpBhUDA1uxA+tTjjEy
+	+PDFjZ1NfpC0mPjg+7vi+DvF34gLj71h95WY7egrEl+IGkdeUJwjkiOsPZQj9Kw++Izh
+	E0GZgSfsPhKw7X9E9AP+f30PqLzH99N7j2bPHTrddxje4pa5eovlG1adrtwg9JoVs8vX
+	SL9iOX/pCs2LWXQuZCm8ZEHy/CXmL5gX6LpA6Dkus3PnSD9jLn/2DK2nzOidPuX3CdPy
+	p04wf8yUwMljnB8xaXHiCLmHTPw5foj6DOMZxvSOZvh9wKj8kQNM7jMidngfh3sMWx/a
+	Q+IuQ8aDu6hPM5hmQG9/mu87ivt2KL5Nn/DebRxu0Wu9ZwuJm/QYd2+iOEX3z64UOjtT
+	dG6o79ig+DodwtvXsbtGu+22NUQnafu3NYnKBK35LQl0NidojqtvimMYo0lmYwzLURqd
+	NkQRGqHBbH0ElWHq8+vC6KwNobMmRGGQGsnVQSwHqHZaFUConyqzlX6k+6j8s8KHei/l
+	esu8FHook1zqwbybUoElbr5+Al7liFUKZW5kc3RyZWFtCmVuZG9iago3NiAwIG9iago0
+	MTAKZW5kb2JqCjQ4IDAgb2JqCjw8IC9MZW5ndGggNzcgMCBSIC9PcmRlciAxIC9FbmNv
+	ZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVj
+	b2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAg
+	MSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
+	YW0KeAGtwQcCgQAAQNH7X0k0VLQ1jBbtNHUFd+C/t20/+mwfzspZlnWhzMvMmaZ5oozT
+	yBlA7+HN6UFd31HaruU0TdtQ6qbmVFVdUcqq5BSgV/HiPEH5M6dkecZJ0yylJGnCieMk
+	pjziB+cOut1vnCsoukaUMAo5QRAGFD/wOReQd/E4LshxHY4NsmyLYlomyDANytk4c04g
+	/aRzNJCqqZwjSDkqFFmRQZIsUURJ5BxA+8OeI4B2wu5/X6r+RswKZW5kc3RyZWFtCmVu
+	ZG9iago3NyAwIG9iagoxODgKZW5kb2JqCjQ3IDAgb2JqCjw8IC9MZW5ndGggNzggMCBS
+	IC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQ
+	ZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0g
+	L1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0
+	ZURlY29kZSA+PgpzdHJlYW0KeAGlwoVSQlEAQMG/tru7u7HpBhUDA1uxA+tTjjEy+PDF
+	jZ1NfpC0mPjg+7vi+DvF34gLj71h95WY7egrEl+IGkdeUJwjkiOsPZQj9Kw++IzhE0GZ
+	gSfsPhKw7X9E9AP+f30PqLzH99N7j2bPHTrddxje4pa5eovlG1adrtwg9JoVs8vXSL9i
+	OX/pCs2LWXQuZCm8ZEHy/CXmL5gX6LpA6Dkus3PnSD9jLn/2DK2nzOidPuX3CdPyp04w
+	f8yUwMljnB8xaXHiCLmHTPw5foj6DOMZxvSOZvh9wKj8kQNM7jMidngfh3sMWx/aQ+Iu
+	Q8aDu6hPM5hmQG9/mu87ivt2KL5Nn/DebRxu0Wu9ZwuJm/QYd2+iOEX3z64UOjtTdG6o
+	79ig+DodwtvXsbtGu+22NUQnafu3NYnKBK35LQl0NidojqtvimMYo0lmYwzLURqdNkQR
+	GqHBbH0ElWHq8+vC6KwNobMmRGGQGsnVQSwHqHZaFUConyqzlX6k+6j8s8KHei/lesu8
+	FHook1zqwbybUoElbr5+Al7liFUKZW5kc3RyZWFtCmVuZG9iago3OCAwIG9iago0MTAK
+	ZW5kb2JqCjQ2IDAgb2JqCjw8IC9MZW5ndGggNzkgMCBSIC9PcmRlciAxIC9FbmNvZGUg
+	WyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2Rl
+	IFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAw
+	IDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K
+	eAGNwgk3VHEYB+AvJhKJRCKRkpKSkhKJRCIZY8asZgxjZuz7vu9bX+v9vZ3rmNO943/v
+	fZ/z8N8E24zzpXCML01exNhwjC8ko3yhex5l06N8LjnCZ8IRPjN5GmHDYT6VDPOp7kmY
+	TYf4RPA4xMdDskE+NnkUZMMAHwn7+Sj50M+mfXwoeODjA6+4hw9U9z1sOMj7wm7eT95z
+	s1UX713Hnkt914XdAXEndlV3nEjdjx1JB3aubjtgsw/bdrf6oP0j24st1c1epP6NTeEe
+	bPZgw3Y3Nuyud0P7S7YL66prXUj9E2vCnVjrxKrtDqzaXemA9od4O1ZuXG5H6u9YFm7D
+	chuWJFuxZHmxFdpv4i1YNF5ogfpXLEg2Y6EZ85JNmLc814TrXzAn2Yg549lGqH/GrPAn
+	zEg2YMbydAOuf8S0cD2mdafqof4BU8LvMSlZh0nzE3X4/x0mhGsxoTteC/W3GBd+g4Rw
+	DRKKlKihuP5rigtXU1w3Vk2mX1FM8iWNCVfRmMloFRm+oKhkJUV1RyvJ9HMalR15RqIV
+	NGIyUkGGTykiXE6R5OFyMl1Gw4LhMgo/ES+lsGqolAwfU0i4hELJQyVktZiG7AaLKfhI
+	vIiCqoEiMnxIAeFCCiT7C8lqAfnt+grI90A8n3yq3nxKfZ+8knnkverJI5u55LE7mEva
+	e7I5NKjqzqHUd8ktnE3ubHLZziKX3YEs0t4Rz6SBG52ZlPo2OYUzyJlB/ZLp1G/ZkU7a
+	W+Jp5Ej7B4pzCpwKZW5kc3RyZWFtCmVuZG9iago3OSAwIG9iago1NzIKZW5kb2JqCjQ1
+	IDAgb2JqCjw8IC9MZW5ndGggODAgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQg
+	XSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAg
+	MSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6
+	ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtwQcCgQAA
+	QNH7X0k0VLQ1jBbtNHUFd+C/t20/+mwfzspZlnWhzMvMmaZ5oozTyBlA7+HN6UFd31Ha
+	ruU0TdtQ6qbmVFVdUcqq5BSgV/HiPEH5M6dkecZJ0yylJGnCieMkpjziB+cOut1vnCso
+	ukaUMAo5QRAGFD/wOReQd/E4LshxHY4NsmyLYlomyDANytk4c04g/aRzNJCqqZwjSDkq
+	FFmRQZIsUURJ5BxA+8OeI4B2wu5/X6r+RswKZW5kc3RyZWFtCmVuZG9iago4MCAwIG9i
+	agoxODgKZW5kb2JqCjQ0IDAgb2JqCjw8IC9MZW5ndGggODEgMCBSIC9PcmRlciAxIC9F
+	bmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAv
+	RGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAx
+	IDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+Pgpz
+	dHJlYW0KeAGNwgk3VHEYB+AvJhKJRCKRkpKSkhKJRCIZY8asZgxjZuz7vu9bX+v9vZ3r
+	mNO943/vfZ/z8N8E24zzpXCML01exNhwjC8ko3yhex5l06N8LjnCZ8IRPjN5GmHDYT6V
+	DPOp7kmYTYf4RPA4xMdDskE+NnkUZMMAHwn7+Sj50M+mfXwoeODjA6+4hw9U9z1sOMj7
+	wm7eT95zs1UX713Hnkt914XdAXEndlV3nEjdjx1JB3aubjtgsw/bdrf6oP0j24st1c1e
+	pP6NTeEebPZgw3Y3Nuyud0P7S7YL66prXUj9E2vCnVjrxKrtDqzaXemA9od4O1ZuXG5H
+	6u9YFm7DchuWJFuxZHmxFdpv4i1YNF5ogfpXLEg2Y6EZ85JNmLc814TrXzAn2Yg549lG
+	qH/GrPAnzEg2YMbydAOuf8S0cD2mdafqof4BU8LvMSlZh0nzE3X4/x0mhGsxoTteC/W3
+	GBd+g4RwDRKKlKihuP5rigtXU1w3Vk2mX1FM8iWNCVfRmMloFRm+oKhkJUV1RyvJ9HMa
+	lR15RqIVNGIyUkGGTykiXE6R5OFyMl1Gw4LhMgo/ES+lsGqolAwfU0i4hELJQyVktZiG
+	7AaLKfhIvIiCqoEiMnxIAeFCCiT7C8lqAfnt+grI90A8n3yq3nxKfZ+8knnkverJI5u5
+	5LE7mEvae7I5NKjqzqHUd8ktnE3ubHLZziKX3YEs0t4Rz6SBG52ZlPo2OYUzyJlB/ZLp
+	1G/ZkU7aW+Jp5Ej7B4pzCpwKZW5kc3RyZWFtCmVuZG9iago4MSAwIG9iago1NzIKZW5k
+	b2JqCjQzIDAgb2JqCjw8IC9MZW5ndGggODIgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAw
+	IDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsg
+	MCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEg
+	XSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGl
+	woVSQlEAQMG/tru7u7HpBhUDA1uxA+tTjjEy+PDFjZ1NfpC0mPjg+7vi+DvF34gLj71h
+	95WY7egrEl+IGkdeUJwjkiOsPZQj9Kw++IzhE0GZgSfsPhKw7X9E9AP+f30PqLzH99N7
+	j2bPHTrddxje4pa5eovlG1adrtwg9JoVs8vXSL9iOX/pCs2LWXQuZCm8ZEHy/CXmL5gX
+	6LpA6Dkus3PnSD9jLn/2DK2nzOidPuX3CdPyp04wf8yUwMljnB8xaXHiCLmHTPw5foj6
+	DOMZxvSOZvh9wKj8kQNM7jMidngfh3sMWx/aQ+IuQ8aDu6hPM5hmQG9/mu87ivt2KL5N
+	n/DebRxu0Wu9ZwuJm/QYd2+iOEX3z64UOjtTdG6o79ig+DodwtvXsbtGu+22NUQnafu3
+	NYnKBK35LQl0NidojqtvimMYo0lmYwzLURqdNkQRGqHBbH0ElWHq8+vC6KwNobMmRGGQ
+	GsnVQSwHqHZaFUConyqzlX6k+6j8s8KHei/lesu8FHook1zqwbybUoElbr5+Al7liFUK
+	ZW5kc3RyZWFtCmVuZG9iago4MiAwIG9iago0MTAKZW5kb2JqCjQyIDAgb2JqCjw8IC9M
+	ZW5ndGggODMgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25U
+	eXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9t
+	YWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAv
+	RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGtwQcCgQAAQNH7X0k0VLQ1jBbt
+	NHUFd+C/t20/+mwfzspZlnWhzMvMmaZ5oozTyBlA7+HN6UFd31HaruU0TdtQ6qbmVFVd
+	Ucqq5BSgV/HiPEH5M6dkecZJ0yylJGnCieMkpjziB+cOut1vnCsoukaUMAo5QRAGFD/w
+	OReQd/E4LshxHY4NsmyLYlomyDANytk4c04g/aRzNJCqqZwjSDkqFFmRQZIsUURJ5BxA
+	+8OeI4B2wu5/X6r+RswKZW5kc3RyZWFtCmVuZG9iago4MyAwIG9iagoxODgKZW5kb2Jq
+	CjQxIDAgb2JqCjw8IC9MZW5ndGggODQgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEz
+	NjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAx
+	IDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAv
+	U2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGlwoVS
+	QlEAQMG/tru7u7HpBhUDA1uxA+tTjjEy+PDFjZ1NfpC0mPjg+7vi+DvF34gLj71h95WY
+	7egrEl+IGkdeUJwjkiOsPZQj9Kw++IzhE0GZgSfsPhKw7X9E9AP+f30PqLzH99N7j2bP
+	HTrddxje4pa5eovlG1adrtwg9JoVs8vXSL9iOX/pCs2LWXQuZCm8ZEHy/CXmL5gX6LpA
+	6Dkus3PnSD9jLn/2DK2nzOidPuX3CdPyp04wf8yUwMljnB8xaXHiCLmHTPw5foj6DOMZ
+	xvSOZvh9wKj8kQNM7jMidngfh3sMWx/aQ+IuQ8aDu6hPM5hmQG9/mu87ivt2KL5Nn/De
+	bRxu0Wu9ZwuJm/QYd2+iOEX3z64UOjtTdG6o79ig+DodwtvXsbtGu+22NUQnafu3NYnK
+	BK35LQl0NidojqtvimMYo0lmYwzLURqdNkQRGqHBbH0ElWHq8+vC6KwNobMmRGGQGsnV
+	QSwHqHZaFUConyqzlX6k+6j8s8KHei/lesu8FHook1zqwbybUoElbr5+Al7liFUKZW5k
+	c3RyZWFtCmVuZG9iago4NCAwIG9iago0MTAKZW5kb2JqCjQwIDAgb2JqCjw8IC9MZW5n
+	dGggODUgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBl
+	IDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWlu
+	IFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG1wolWAVEAANDvMvvqS7NFlsggknUG
+	oZTKki1LKcIXdOrkOKMx5s28d88tbeylY5WNHfjarhgtKmtVeS0euRJleIsrUfVLLCK6
+	FItLsQC5UFj+XggFrfmFAOGnkDc29ymA/RByFmY/BL1zIauXz87BZub87jufQfeNz7zx
+	1yjO+OvD0zPecC49+3fKpUFeTTmAE+7K2tSE0z7mUggmx9zPV81s8hXGEZvcvhyxMA/Z
+	S92JIWv+gE0Ajg/YbSY+0N1n4pbH+ozGHhNDU+ox0gvKXUb6S0tdOgp3h47qvujQJrfp
+	C/CRNm1oi44ApyKt/eEWpfGZCqN5/kQh/Eidq4ceKWibZOjYYJM084EMmhp4II+/JwOQ
+	+u/J/Q3SbyjhbwA/uyNQvSXOtPpuCQjrhM9Yb50wFvfWt2u41+zTGq63ip9C7aniuze4
+	B90K7qng7oMxd8XsMuY+0FXGrC5hLsOdJQysgjktdCjYts2hqMs2B+wnsu1v0XYC8hsK
+	r7WjCmVuZHN0cmVhbQplbmRvYmoKODUgMCBvYmoKMzg0CmVuZG9iagoyIDAgb2JqCjw8
+	IC9MYXN0IDg2IDAgUiAvRmlyc3QgODcgMCBSID4+CmVuZG9iago4NyAwIG9iago8PCAv
+	UGFyZW50IDg4IDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3MzMgMCBd
+	IC9UaXRsZSAoQ2FudmFzIDEpCj4+CmVuZG9iago4OCAwIG9iago8PCA+PgplbmRvYmoK
+	ODYgMCBvYmoKPDwgL1BhcmVudCA4OCAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAv
+	WFlaIDAgNzMzIDAgXSAvVGl0bGUgKENhbnZhcyAxKQo+PgplbmRvYmoKODkgMCBvYmoK
+	PDwgL0xlbmd0aCA5MCAwIFIgL0xlbmd0aDEgMTMwODAgL0ZpbHRlciAvRmxhdGVEZWNv
+	ZGUgPj4Kc3RyZWFtCngBvXsLeFNV1uje55mcJG0eTfPoI0mTNH2n7zZQ6GnpC9pAaSm2
+	SKUFyhQGsCjyHBABLRTfMwoiIz7QQRw0FAeDDFwugw6CzEXBX1TUcUTEweqMU0EtOblr
+	n4QKvX7z+X13vjmnK/t59l5nrbXXXmud3cW33dGFNGgNolHjtM6eOUi+cnMRoi7OWtDZ
+	EykbuiF9c9aSxfZImU1DiL5nTs8vFkTKigBCgusX85dHn49bg1BCYndX5+xIO7oKaXE3
+	VETKuBBSV/eCxcsiZf0ZSH8z/9ZZ0fY40t6woHNZdH50Dsr2hZ0LuiL9cxWQpvXcevvi
+	SNm7DdL5Pbd1RfvjVsDv/yAMtW40DynRfKRAFNLCPR0h/qLgQgy0knaAiuyWJ2fEln2L
+	dGRYhJ725Kwh6euOP35/5dxVj2q1sgb6KeX+pAGe4dKldITUGNo/UK0ebiGt5HIHUVNm
+	ENUBjAUoBMjI3KMQX8UPorj2QVGJbQxS2c5avjqEc4D+F+TfAM4R1RqknLWuzDZr3bq6
+	9AolrkclDEY2XI1cclrV73rBFsRj+11OSMZEEqq/JAlKSFSWuGyhkpm2qyVBBRYTbN+5
+	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
+	BNiG44tLxmJPRMqoiCW8x5XRYLVkMlIPHvPVJ/CVoG/+6oOpOTl47VsUJeh189XMbVfP
+	0a6hU9LxRzDNxRHdL19hckrxpy43VNJgE6jBEnOhNLDIMsBKKwL7rATiZlVggdXAOcc6
+	NB4OEdfDiVA/nNZshHOPTagZzlJORTfBCcg2+Ap5MzkVD5JGpI1cHPFnW6vHNba0ZtZ1
+	zV/StXjurM7sylvnzya9rl3w7QHtBCChm2MAZwEuAnwHneBLJDYDpAGUAtQBtAJ0AywD
+	2ACwBWAnQBDgGMBZgIsA38GLKwDMAGkApQB1AK0A3QDLADYAbAHYCRAEOAZwNhy9AAc0
+	nMdghdxYThtRTh9Rll36656vGNFePaJcM6JcO6LcMKLcNKLcPKI8ZUR56ohy54jyzBHl
+	WSPKwLQb6CHL0nXvJ//PxnXlX4zo3z2iPHdEed6I8i9HlOX/Eblu/IUj2m8dUZb/h+O6
+	/reNaL99RHnxiPIdI8pLRpSXjiiDPN1An+Wk/H8B4eKsgwplbmRzdHJlYW0KZW5kb2Jq
+	CjkwIDAgb2JqCjg2NDAKZW5kb2JqCjkxIDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3Jp
+	cHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0IDcyMCAvRGVzY2VudCAtMjMwIC9GbGFn
+	cyAzMgovRm9udEJCb3ggWy0xMDE4IC00ODEgMTQzNiAxMTU5XSAvRm9udE5hbWUgL1hF
+	Q1BVWCtIZWx2ZXRpY2EtQm9sZCAvSXRhbGljQW5nbGUKMCAvU3RlbVYgMCAvTWF4V2lk
+	dGggMTUwMCAvWEhlaWdodCA1NDkgL0ZvbnRGaWxlMiA4OSAwIFIgPj4KZW5kb2JqCjky
+	IDAgb2JqClsgMjc4IDAgMCAwIDAgMCAwIDAgMzMzIDMzMyAwIDAgMCAwIDI3OCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCA3MjIgMCAwIDAgNjY3IDYxMSA3
+	NzggMCAwIDAgMCA2MTEgMCAwIDAgMCAwIDcyMiA2NjcgNjExIDAgNjY3IDAgMCAwIDAg
+	MAowIDAgMCAwIDAgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzggMjc4
+	IDU1NiAwIDg4OSA2MTEgNjExIDYxMSAwCjM4OSA1NTYgMzMzIDYxMSA1NTYgNzc4IDU1
+	NiA1NTYgXQplbmRvYmoKMjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1Ry
+	dWVUeXBlIC9CYXNlRm9udCAvWEVDUFVYK0hlbHZldGljYS1Cb2xkIC9Gb250RGVzY3Jp
+	cHRvcgo5MSAwIFIgL1dpZHRocyA5MiAwIFIgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIg
+	MTIxIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoKOTMgMCBvYmoK
+	KE1hYyBPUyBYIDEwLjYuOCBRdWFydHogUERGQ29udGV4dCkKZW5kb2JqCjk0IDAgb2Jq
+	CihEOjIwMTExMTA3MTgzOTIwWjAwJzAwJykKZW5kb2JqCjEgMCBvYmoKPDwgL1Byb2R1
+	Y2VyIDkzIDAgUiAvQ3JlYXRpb25EYXRlIDk0IDAgUiAvTW9kRGF0ZSA5NCAwIFIgPj4K
+	ZW5kb2JqCnhyZWYKMCA5NQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwNjI3NjQgMDAw
+	MDAgbiAKMDAwMDA1Mjk3OSAwMDAwMCBuIAowMDAwMDA0MzU1IDAwMDAwIG4gCjAwMDAw
+	NDY3MzQgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDA0MzM1IDAwMDAw
+	IG4gCjAwMDAwMDQ0NTkgMDAwMDAgbiAKMDAwMDA0NTgwMSAwMDAwMCBuIAowMDAwMDE1
+	MDg0IDAwMDAwIG4gCjAwMDAwMTg1NDUgMDAwMDAgbiAKMDAwMDAxMjQ4MCAwMDAwMCBu
+	IAowMDAwMDEzMzM1IDAwMDAwIG4gCjAwMDAwMDY0MjIgMDAwMDAgbiAKMDAwMDAxMjQ1
+	OSAwMDAwMCBuIAowMDAwMDE5OTk1IDAwMDAwIG4gCjAwMDAwMjE0OTEgMDAwMDAgbiAK
+	MDAwMDAxOTA4OSAwMDAwMCBuIAowMDAwMDE5OTc1IDAwMDAwIG4gCjAwMDAwMTMzNTUg
+	MDAwMDAgbiAKMDAwMDAxNDQ5MyAwMDAwMCBuIAowMDAwMDE0NTEzIDAwMDAwIG4gCjAw
+	MDAwMTUwNjQgMDAwMDAgbiAKMDAwMDAxODU2NiAwMDAwMCBuIAowMDAwMDE5MDY5IDAw
+	MDAwIG4gCjAwMDAwMDUxODkgMDAwMDAgbiAKMDAwMDA0NDkwNCAwMDAwMCBuIAowMDAw
+	MDYyNDkwIDAwMDAwIG4gCjAwMDAwMDUwMzUgMDAwMDAgbiAKMDAwMDAwNDg4MSAwMDAw
+	MCBuIAowMDAwMDA2MTA1IDAwMDAwIG4gCjAwMDAwMDUzNDcgMDAwMDAgbiAKMDAwMDAw
+	NjI2NCAwMDAwMCBuIAowMDAwMDA1OTQ4IDAwMDAwIG4gCjAwMDAwMDU4MDIgMDAwMDAg
+	biAKMDAwMDAwNTUwMSAwMDAwMCBuIAowMDAwMDA1NjQ3IDAwMDAwIG4gCjAwMDAwMzc4
+	NjggMDAwMDAgbiAKMDAwMDAzNzkxNSAwMDAwMCBuIAowMDAwMDQ2Njk3IDAwMDAwIG4g
+	CjAwMDAwNTIzNjAgMDAwMDAgbiAKMDAwMDA1MTcxNSAwMDAwMCBuIAowMDAwMDUxMjky
+	IDAwMDAwIG4gCjAwMDAwNTA2NDcgMDAwMDAgbiAKMDAwMDA0OTg0MCAwMDAwMCBuIAow
+	MDAwMDQ5NDE3IDAwMDAwIG4gCjAwMDAwNDg2MTAgMDAwMDAgbiAKMDAwMDA0Nzk2NSAw
+	MDAwMCBuIAowMDAwMDQ3NTQyIDAwMDAwIG4gCjAwMDAwNDY4OTcgMDAwMDAgbiAKMDAw
+	MDA0NDAzOSAwMDAwMCBuIAowMDAwMDMzMDgyIDAwMDAwIG4gCjAwMDAwMzc4NDcgMDAw
+	MDAgbiAKMDAwMDAyMTUxMiAwMDAwMCBuIAowMDAwMDIyOTA4IDAwMDAwIG4gCjAwMDAw
+	MjcyMzIgMDAwMDAgbiAKMDAwMDAyODkwMCAwMDAwMCBuIAowMDAwMDI4OTIxIDAwMDAw
+	IG4gCjAwMDAwMzAwMzcgMDAwMDAgbiAKMDAwMDAzMDA1NyAwMDAwMCBuIAowMDAwMDMz
+	MDYxIDAwMDAwIG4gCjAwMDAwMjQzODUgMDAwMDAgbiAKMDAwMDAyNTQxOCAwMDAwMCBu
+	IAowMDAwMDIyOTI5IDAwMDAwIG4gCjAwMDAwMjQzNjQgMDAwMDAgbiAKMDAwMDAyNTQz
+	OCAwMDAwMCBuIAowMDAwMDI3MjExIDAwMDAwIG4gCjAwMDAwMzc5NjIgMDAwMDAgbiAK
+	MDAwMDA0NDAxOCAwMDAwMCBuIAowMDAwMDQ0MDc2IDAwMDAwIG4gCjAwMDAwNDQ4ODQg
+	MDAwMDAgbiAKMDAwMDA0NDk0MSAwMDAwMCBuIAowMDAwMDQ1NzgxIDAwMDAwIG4gCjAw
+	MDAwNDU4MzcgMDAwMDAgbiAKMDAwMDA0NjY3NyAwMDAwMCBuIAowMDAwMDQ2ODE3IDAw
+	MDAwIG4gCjAwMDAwNDc1MjIgMDAwMDAgbiAKMDAwMDA0Nzk0NSAwMDAwMCBuIAowMDAw
+	MDQ4NTkwIDAwMDAwIG4gCjAwMDAwNDkzOTcgMDAwMDAgbiAKMDAwMDA0OTgyMCAwMDAw
+	MCBuIAowMDAwMDUwNjI3IDAwMDAwIG4gCjAwMDAwNTEyNzIgMDAwMDAgbiAKMDAwMDA1
+	MTY5NSAwMDAwMCBuIAowMDAwMDUyMzQwIDAwMDAwIG4gCjAwMDAwNTI5NTkgMDAwMDAg
+	biAKMDAwMDA1MzE0MiAwMDAwMCBuIAowMDAwMDUzMDI3IDAwMDAwIG4gCjAwMDAwNTMx
+	MjAgMDAwMDAgbiAKMDAwMDA1MzIzNSAwMDAwMCBuIAowMDAwMDYxOTY2IDAwMDAwIG4g
+	CjAwMDAwNjE5ODcgMDAwMDAgbiAKMDAwMDA2MjIxOCAwMDAwMCBuIAowMDAwMDYyNjcw
+	IDAwMDAwIG4gCjAwMDAwNjI3MjIgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA5NSAv
+	Um9vdCA3NSAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPGYzYTI5Yjg5OTMxMWUxMmY1NDY5
+	NGJlN2ZlNThmMDgyPgo8ZjNhMjliODk5MzExZTEyZjU0Njk0YmU3ZmU1OGYwODI+IF0g
+	Pj4Kc3RhcnR4cmVmCjYyODM5CiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9yIChSb2JlcnQg
+	THkpL0NyZWF0aW9uRGF0ZSAoRDoyMDExMDkxOTE3MTUwMFopL0NyZWF0b3IgKE9tbmlH
+	cmFmZmxlIFByb2Zlc3Npb25hbCA1LjMuMikvTW9kRGF0ZSAoRDoyMDExMTEwNzE4MzUw
+	MFopL1Byb2R1Y2VyIDkzIDAgUiAvVGl0bGUgKHJzX2dyYXBoaWNzKT4+CmVuZG9iagp4
+	cmVmCjEgMQowMDAwMDY0ODk3IDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzxmM2EyOWI4
+	OTkzMTFlMTJmNTQ2OTRiZTdmZTU4ZjA4Mj4gPGYzYTI5Yjg5OTMxMWUxMmY1NDY5NGJl
+	N2ZlNThmMDgyPl0gL0luZm8gMSAwIFIgL1ByZXYgNjI4MzkgL1Jvb3QgNzUgMCBSIC9T
+	aXplIDk1Pj4Kc3RhcnR4cmVmCjY1MDc1CiUlRU9GCg==
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array>
+			<dict>
+				<key>name</key>
+				<string>Canvas 1</string>
+			</dict>
+		</array>
+		<key>Frame</key>
+		<string>{{516, 97}, {969, 926}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{-129, -19}, {834, 772}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
diff --git a/docs/html/images/rs_graphics.png b/docs/html/images/rs_graphics.png
new file mode 100644
index 0000000..fde58d2
--- /dev/null
+++ b/docs/html/images/rs_graphics.png
Binary files differ
diff --git a/docs/html/images/rs_overview.graffle b/docs/html/images/rs_overview.graffle
new file mode 100644
index 0000000..5613744
--- /dev/null
+++ b/docs/html/images/rs_overview.graffle
@@ -0,0 +1,3012 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>138.28.0.154505</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 733}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-09-07 14:32:49 -0700</string>
+	<key>Creator</key>
+	<string>Robert Ly</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>214</integer>
+				<key>Info</key>
+				<integer>3</integer>
+			</dict>
+			<key>ID</key>
+			<integer>227</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>6.25</real>
+			<key>Points</key>
+			<array>
+				<string>{367.375, 325.998}</string>
+				<string>{332.375, 325.998}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>4</integer>
+			</dict>
+			<key>ID</key>
+			<integer>226</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{138.375, 427.17}</string>
+				<string>{138.375, 454.17}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>157</integer>
+				<key>Info</key>
+				<integer>5</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{43.375, 454.17}, {190, 50.1697}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>4</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.274119</string>
+						<key>g</key>
+						<string>0.950739</string>
+						<key>r</key>
+						<string>0.787494</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.223529</string>
+						<key>g</key>
+						<string>0.776471</string>
+						<key>r</key>
+						<string>0.643137</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.165602</string>
+						<key>g</key>
+						<string>0.586124</string>
+						<key>r</key>
+						<string>0.428309</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript Graphics and Compute Engine}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{303.368, 423.5}, {70, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>a</key>
+					<string>0.65</string>
+					<key>w</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>224</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>223</integer>
+				<key>Position</key>
+				<real>0.61347693204879761</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>RTFD</key>
+				<data>
+				BAtzdHJlYW10eXBlZIHoA4QBQISEhBJOU0F0dHJpYnV0
+				ZWRTdHJpbmcAhIQITlNPYmplY3QAhZKEhIQITlNTdHJp
+				bmcBlIQBKwpSZWFkL1dyaXRlhoQCaUkBCpKEhIQMTlNE
+				aWN0aW9uYXJ5AJSEAWkDkoSWlgdOU0NvbG9yhpKEhIQH
+				TlNDb2xvcgCUhAFjA4QCZmYAg2ZmJj+GkoSWlgZOU0Zv
+				bnSGkoSEhAZOU0ZvbnQelJkchAVbMjhjXQYAAAAUAAAA
+				//5IAGUAbAB2AGUAdABpAGMAYQCEAWYMmwCbAZsAmwCG
+				koSWlhBOU1BhcmFncmFwaFN0eWxlhpKEhIQQTlNQYXJh
+				Z3JhcGhTdHlsZQCUhARDQ0BTAgCEhIQHTlNBcnJheQCU
+				mQyShISECU5TVGV4dFRhYgCUhAJDZgAchpKEpaQAOIaS
+				hKWkAFSGkoSlpABwhpKEpaQAgYwAhpKEpaQAgagAhpKE
+				paQAgcQAhpKEpaQAgeAAhpKEpaQAgfwAhpKEpaQAgRgB
+				hpKEpaQAgTQBhpKEpaQAgVABhoYAhoaG
+				</data>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 Read/Write}</string>
+				<key>alpha</key>
+				<array>
+					<array>
+						<integer>0</integer>
+						<integer>10</integer>
+						<real>0.64999997615814209</real>
+					</array>
+				</array>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>225</integer>
+				<key>Info</key>
+				<integer>7</integer>
+			</dict>
+			<key>ID</key>
+			<integer>223</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>31</real>
+			<key>Points</key>
+			<array>
+				<string>{413.275, 381.998}</string>
+				<string>{258.125, 435.5}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+				<key>Info</key>
+				<integer>16</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{306.62, 201.5}, {70, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>a</key>
+					<string>0.65</string>
+					<key>w</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>222</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>221</integer>
+				<key>Position</key>
+				<real>0.60332739353179932</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>RTFD</key>
+				<data>
+				BAtzdHJlYW10eXBlZIHoA4QBQISEhBJOU0F0dHJpYnV0
+				ZWRTdHJpbmcAhIQITlNPYmplY3QAhZKEhIQITlNTdHJp
+				bmcBlIQBKwpSZWFkL1dyaXRlhoQCaUkBCpKEhIQMTlNE
+				aWN0aW9uYXJ5AJSEAWkDkoSWlgdOU0NvbG9yhpKEhIQH
+				TlNDb2xvcgCUhAFjA4QCZmYAg2ZmJj+GkoSWlgZOU0Zv
+				bnSGkoSEhAZOU0ZvbnQelJkchAVbMjhjXQYAAAAUAAAA
+				//5IAGUAbAB2AGUAdABpAGMAYQCEAWYMmwCbAZsAmwCG
+				koSWlhBOU1BhcmFncmFwaFN0eWxlhpKEhIQQTlNQYXJh
+				Z3JhcGhTdHlsZQCUhARDQ0BTAgCEhIQHTlNBcnJheQCU
+				mQyShISECU5TVGV4dFRhYgCUhAJDZgAchpKEpaQAOIaS
+				hKWkAFSGkoSlpABwhpKEpaQAgYwAhpKEpaQAgagAhpKE
+				paQAgcQAhpKEpaQAgeAAhpKEpaQAgfwAhpKEpaQAgRgB
+				hpKEpaQAgTQBhpKEpaQAgVABhoYAhoaG
+				</data>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 Read/Write}</string>
+				<key>alpha</key>
+				<array>
+					<array>
+						<integer>0</integer>
+						<integer>10</integer>
+						<real>0.64999997615814209</real>
+					</array>
+				</array>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>155</integer>
+				<key>Info</key>
+				<integer>7</integer>
+			</dict>
+			<key>ID</key>
+			<integer>221</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{410.256, 272.907}</string>
+				<string>{258.125, 213.5}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>FilledArrow</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+				<key>Info</key>
+				<integer>13</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{278.375, 306.998}, {54, 38}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>a</key>
+					<string>0.65</string>
+					<key>w</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>214</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>213</integer>
+				<key>Position</key>
+				<real>0.48846337199211121</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>RTFD</key>
+				<data>
+				BAtzdHJlYW10eXBlZIHoA4QBQISEhBJOU0F0dHJpYnV0
+				ZWRTdHJpbmcAhIQITlNPYmplY3QAhZKEhIQITlNTdHJp
+				bmcBlIQBKw5NZW1vcnkKQmluZGluZ4aEAmlJAQ6ShISE
+				DE5TRGljdGlvbmFyeQCUhAFpA5KElpYHTlNDb2xvcoaS
+				hISEB05TQ29sb3IAlIQBYwOEAmZmAINmZiY/hpKElpYG
+				TlNGb250hpKEhIQGTlNGb250HpSZHIQFWzI4Y10GAAAA
+				FAAAAP/+SABlAGwAdgBlAHQAaQBjAGEAhAFmDJsAmwGb
+				AJsAhpKElpYQTlNQYXJhZ3JhcGhTdHlsZYaShISEEE5T
+				UGFyYWdyYXBoU3R5bGUAlIQEQ0NAUwIAhISEB05TQXJy
+				YXkAlJkMkoSEhAlOU1RleHRUYWIAlIQCQ2YAHIaShKWk
+				ADiGkoSlpABUhpKEpaQAcIaShKWkAIGMAIaShKWkAIGo
+				AIaShKWkAIHEAIaShKWkAIHgAIaShKWkAIH8AIaShKWk
+				AIEYAYaShKWkAIE0AYaShKWkAIFQAYaGAIaGhg==
+				</data>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 Memory\
+Binding}</string>
+				<key>alpha</key>
+				<array>
+					<array>
+						<integer>0</integer>
+						<integer>14</integer>
+						<real>0.64999997615814209</real>
+					</array>
+				</array>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>225</integer>
+				<key>Info</key>
+				<integer>11</integer>
+			</dict>
+			<key>ID</key>
+			<integer>213</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{258.125, 263.815}</string>
+				<string>{305.375, 334}</string>
+				<string>{258.125, 393.3}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>155</integer>
+				<key>Info</key>
+				<integer>12</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{328.398, 152.3}, {66, 38}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>Vertical</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>a</key>
+					<string>0.65</string>
+					<key>w</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>199</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>198</integer>
+				<key>Position</key>
+				<real>0.34207895398139954</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>RTFD</key>
+				<data>
+				BAtzdHJlYW10eXBlZIHoA4QBQISEhBJOU0F0dHJpYnV0
+				ZWRTdHJpbmcAhIQITlNPYmplY3QAhZKEhIQITlNTdHJp
+				bmcBlIQBKxFNZW1vcnkgQWxsb2NhdGlvboaEAmlJARGS
+				hISEDE5TRGljdGlvbmFyeQCUhAFpA5KElpYHTlNDb2xv
+				coaShISEB05TQ29sb3IAlIQBYwOEAmZmAINmZiY/hpKE
+				lpYGTlNGb250hpKEhIQGTlNGb250HpSZHIQFWzI4Y10G
+				AAAAFAAAAP/+SABlAGwAdgBlAHQAaQBjAGEAhAFmDJsA
+				mwGbAJsAhpKElpYQTlNQYXJhZ3JhcGhTdHlsZYaShISE
+				EE5TUGFyYWdyYXBoU3R5bGUAlIQEQ0NAUwIAhISEB05T
+				QXJyYXkAlJkMkoSEhAlOU1RleHRUYWIAlIQCQ2YAHIaS
+				hKWkADiGkoSlpABUhpKEpaQAcIaShKWkAIGMAIaShKWk
+				AIGoAIaShKWkAIHEAIaShKWkAIHgAIaShKWkAIH8AIaS
+				hKWkAIEYAYaShKWkAIE0AYaShKWkAIFQAYaGAIaGhg==
+				</data>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 Memory Allocation}</string>
+				<key>alpha</key>
+				<array>
+					<array>
+						<integer>0</integer>
+						<integer>17</integer>
+						<real>0.64999997615814209</real>
+					</array>
+				</array>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>200</integer>
+				<key>Info</key>
+				<integer>6</integer>
+			</dict>
+			<key>ID</key>
+			<integer>198</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{258.125, 171.3}</string>
+				<string>{462.375, 269.998}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>Ball</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>155</integer>
+				<key>Info</key>
+				<integer>11</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{367.375, 269.998}, {190, 112}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>200</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.628571</string>
+						<key>g</key>
+						<string>0.768599</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.236788</string>
+						<key>g</key>
+						<string>0.532236</string>
+						<key>r</key>
+						<string>0.990271</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.131021</string>
+						<key>g</key>
+						<string>0.363196</string>
+						<key>r</key>
+						<string>0.725948</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Memory}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>225</integer>
+			</dict>
+			<key>ID</key>
+			<integer>203</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{138.375, 309.5}</string>
+				<string>{138.375, 340}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>155</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>DroidSans</string>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>201</integer>
+				<key>Info</key>
+				<integer>6</integer>
+			</dict>
+			<key>ID</key>
+			<integer>196</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<false/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>4.1290435791015625</real>
+			<key>Points</key>
+			<array>
+				<string>{138.375, 208.17}</string>
+				<string>{138.375, 233.208}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.7</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>4</real>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>202</integer>
+				<key>Info</key>
+				<integer>5</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{43.375, 158}, {190, 50.1697}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>202</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Android Application Code}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{43.375, 233.208}, {190, 50.1697}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>201</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.274119</string>
+						<key>g</key>
+						<string>0.950739</string>
+						<key>r</key>
+						<string>0.787494</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.223529</string>
+						<key>g</key>
+						<string>0.776471</string>
+						<key>r</key>
+						<string>0.643137</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.165602</string>
+						<key>g</key>
+						<string>0.586124</string>
+						<key>r</key>
+						<string>0.428309</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Reflected Layer Classes }</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{43.375, 377}, {190, 50.1697}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>DroidSans-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>157</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.874135</string>
+						<key>r</key>
+						<string>0.71718</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>0.662438</string>
+						<key>r</key>
+						<string>0.464468</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.93512</string>
+						<key>g</key>
+						<string>0.472602</string>
+						<key>r</key>
+						<string>0.333854</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Renderscript Code}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{18.625, 118}, {239.5, 191}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>155</integer>
+			<key>Line</key>
+			<dict>
+				<key>ID</key>
+				<integer>196</integer>
+				<key>Position</key>
+				<real>0.21288931369781494</real>
+				<key>RotationType</key>
+				<integer>0</integer>
+			</dict>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.938075</string>
+						<key>g</key>
+						<string>0.938269</string>
+						<key>r</key>
+						<string>0.938154</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.727869</string>
+						<key>g</key>
+						<string>0.728019</string>
+						<key>r</key>
+						<string>0.72793</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.472997</string>
+						<key>g</key>
+						<string>0.473094</string>
+						<key>r</key>
+						<string>0.473036</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+Android Framework\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{18.625, 340}, {239.5, 191}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>Font</key>
+				<string>Helvetica-Bold</string>
+				<key>Size</key>
+				<real>10</real>
+			</dict>
+			<key>ID</key>
+			<integer>225</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 1}</string>
+				<string>{1, -1}</string>
+				<string>{-1, -1}</string>
+				<string>{-1, 1}</string>
+				<string>{0, 1}</string>
+				<string>{0, -1}</string>
+				<string>{1, 0}</string>
+				<string>{-1, 0}</string>
+				<string>{-0.5, -0.233518}</string>
+				<string>{-0.491442, 0.260063}</string>
+				<string>{0.507118, -0.224086}</string>
+				<string>{0.507118, 0.267179}</string>
+				<string>{-0.27431, -0.474028}</string>
+				<string>{0.27978, -0.478478}</string>
+				<string>{0.293938, 0.543044}</string>
+				<string>{-0.286232, 0.553804}</string>
+			</array>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.938075</string>
+						<key>g</key>
+						<string>0.938269</string>
+						<key>r</key>
+						<string>0.938154</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0.727869</string>
+						<key>g</key>
+						<string>0.728019</string>
+						<key>r</key>
+						<string>0.72793</string>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.35</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>2.3972222805023193</real>
+					<key>ShadowVector</key>
+					<string>{0, 1}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0.472997</string>
+						<key>g</key>
+						<string>0.473094</string>
+						<key>r</key>
+						<string>0.473036</string>
+					</dict>
+					<key>CornerRadius</key>
+					<real>3</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 \
+\
+Renderscript Runtime\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+\
+}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-11-29 09:13:03 -0800</string>
+	<key>Modifier</key>
+	<string>Robert Ly</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgWQCgRgDhg==</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	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
+	GLjihSUSuy0/AuPdCMCYpWmZoplfsu4Z52Wp4IiIBSwAea1k4dLUelACIO4zSlkDV2SV
+	qBMonJiJSqCAgZ0/pQwlAOulqVtlbG2eG8vZU7iN9LP02P/eR/CGAF34jeQR6Y4t/8uH
+	BG0vv7cjG7LAdqpDOYBWHmjDvdgJK86vKdxHvNFETR2gR1DTciHLuVzIuWeaKAF+RrEz
+	IwsBt9TggeC2EQZ4CEWFn/GkswRyWwUNGSmzsAyFTsqjJjxSJj2mJSRKF24IyAx0ZUY4
+	R50UHkawQqdRICh9YGM0ER3cT2ZsbZlbhe1sNfse+7aOwBHQhkizMTx0x73OKUci8JDW
+	AA+hPJ4A0dQnAvUm+BMxIHCJdBY9mvo/vvP8VqJIq1NafKlVg5seZ0Jz+/6IYyxK4hd3
+	YUO1aqDFgXOR8v6Q6HbswoWMR3pQNBQo72oo8CSslqrZIUsX6eL19Wqv4XIlw118rYuE
+	Y9/2pVURpR84JU8mmEi+uh17ITSQEpIhBxUNoB5v54cSBwgI/UBwp5wL8g0P6hlU4scD
+	YUuqw/4h5dxeLks1gwnNYOvKbNDjDoZ2R/qbVmRz4I7wErFVjvCN0FP3NojNNb84H8K2
+	FijRcWkeMuEBFeVMicLGRClIC+DcSImPFE6rGaUd1/f/A1RDIwEKZW5kc3RyZWFtCmVu
+	ZG9iago2IDAgb2JqCjM4ODcKZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1Bh
+	cmVudCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50cyA1IDAgUiAvTWVkaWFC
+	b3ggWzAgMCA1NzYgNzMzXQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJvY1NldCBbIC9Q
+	REYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSAvQ29sb3JTcGFjZSA8PCAv
+	Q3MxIDggMCBSCi9DczIgMTYgMCBSID4+IC9FeHRHU3RhdGUgPDwgL0dzMSAyNSAwIFIg
+	L0dzMiAyNiAwIFIgL0dzMyAyNyAwIFIgL0dzNCAyOCAwIFIKPj4gL0ZvbnQgPDwgL0Yy
+	LjAgMjMgMCBSIC9GMS4wIDE3IDAgUiA+PiAvWE9iamVjdCA8PCAvSW0zIDEzIDAgUiAv
+	SW0xIDkgMCBSCi9JbTIgMTEgMCBSID4+IC9TaGFkaW5nIDw8IC9TaDEgMTUgMCBSIC9T
+	aDMgMTkgMCBSIC9TaDcgMjQgMCBSIC9TaDIgMTggMCBSCi9TaDUgMjEgMCBSIC9TaDYg
+	MjIgMCBSIC9TaDQgMjAgMCBSID4+ID4+CmVuZG9iagoxNSAwIG9iago8PCAvQ29sb3JT
+	cGFjZSA4IDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgMTIwLjI1IC05NiAxMjAu
+	MjUgOTYuMDAwMDUgXQovRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBbIGZhbHNlIGZhbHNl
+	IF0gL0Z1bmN0aW9uIDI5IDAgUiA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL0NvbG9yU3Bh
+	Y2UgOCAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDk1LjUgLTI1LjU4NDg1IDk1
+	LjQ5OTk4IDI1LjU4NDg5Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQgWyBmYWxzZSBm
+	YWxzZSBdIC9GdW5jdGlvbiAzMCAwIFIgPj4KZW5kb2JqCjI0IDAgb2JqCjw8IC9Db2xv
+	clNwYWNlIDggMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41IC0yNS41ODQ4
+	NSA5NS40OTk5OCAyNS41ODQ4OQpdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5kIFsgZmFs
+	c2UgZmFsc2UgXSAvRnVuY3Rpb24gMzEgMCBSID4+CmVuZG9iagoxOCAwIG9iago8PCAv
+	Q29sb3JTcGFjZSA4IDAgUiAvU2hhZGluZ1R5cGUgMiAvQ29vcmRzIFsgMTIwLjI1IC05
+	NiAxMjAuMjUgOTYuMDAwMDUgXQovRG9tYWluIFsgMCAxIF0gL0V4dGVuZCBbIGZhbHNl
+	IGZhbHNlIF0gL0Z1bmN0aW9uIDMyIDAgUiA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL0Nv
+	bG9yU3BhY2UgOCAwIFIgL1NoYWRpbmdUeXBlIDIgL0Nvb3JkcyBbIDk1LjUgLTI1LjU4
+	NDg1IDk1LjQ5OTk4IDI1LjU4NDg5Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQgWyBm
+	YWxzZSBmYWxzZSBdIC9GdW5jdGlvbiAzMyAwIFIgPj4KZW5kb2JqCjIyIDAgb2JqCjw8
+	IC9Db2xvclNwYWNlIDggMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41IC01
+	Ni41IDk1LjQ5OTk4IDU2LjUwMDA0Cl0gL0RvbWFpbiBbIDAgMSBdIC9FeHRlbmQgWyBm
+	YWxzZSBmYWxzZSBdIC9GdW5jdGlvbiAzNCAwIFIgPj4KZW5kb2JqCjIwIDAgb2JqCjw8
+	IC9Db2xvclNwYWNlIDggMCBSIC9TaGFkaW5nVHlwZSAyIC9Db29yZHMgWyA5NS41IC0y
+	NS41ODQ4NSA5NS40OTk5OCAyNS41ODQ4OQpdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5k
+	IFsgZmFsc2UgZmFsc2UgXSAvRnVuY3Rpb24gMzUgMCBSID4+CmVuZG9iagoxMyAwIG9i
+	ago8PCAvTGVuZ3RoIDE0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug
+	L1dpZHRoIDQwMiAvSGVpZ2h0IDI0NiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFj
+	ZSAzNiAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMzcgMCBSIC9CaXRzUGVy
+	Q29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dCBAAAA
+	AMOg+VMf5IVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMvAwOHIAABCmVuZHN0cmVhbQplbmRvYmoK
+	MTQgMCBvYmoKMTMxNgplbmRvYmoKOSAwIG9iago8PCAvTGVuZ3RoIDEwIDAgUiAvVHlw
+	ZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDUwMiAvSGVpZ2h0IDQ2MiAv
+	SW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSAzNiAwIFIgL0ludGVudCAvUGVyY2Vw
+	dHVhbCAvU01hc2sgMzkgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxh
+	dGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDPwMDnnIAAQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjMwNTcKZW5k
+	b2JqCjExIDAgb2JqCjw8IC9MZW5ndGggMTIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0
+	eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMTIyIC9JbnRlcnBvbGF0ZQp0cnVl
+	IC9Db2xvclNwYWNlIDM2IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA0MSAw
+	IFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
+	YW0KeAHt0DEBAAAAwqD1T20JT4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
+	AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
+	YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
+	DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYOAz
+	MD7aAAEKZW5kc3RyZWFtCmVuZG9iagoxMiAwIG9iago2NjUKZW5kb2JqCjQxIDAgb2Jq
+	Cjw8IC9MZW5ndGggNDIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAv
+	V2lkdGggNDAyIC9IZWlnaHQgMTIyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRl
+	cnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv
+	ZGUgPj4Kc3RyZWFtCngB7ZdrU9pqFIVJQi7cBVSEgnpKKVYhnUPrHRipIJeDApUA/f9/
+	pKEzbcHL9ot915zp2p9g1pCVeR72SwgEOCRAAiRAAiRAAiRAAmoIaLpucJQS0HVNe06u
+	phumZTshjkoCjm0GjaedaIbpRGKJZIqjkEByIx4N20H9CSe6YUUS6UwuX9jlqCNQeJPd
+	TsVC5uM10Qw7ms7tlw4rrvuRo4qAWz06KBYyG2Hz4ZZohhXdLLx3j8/rjSZHHYHG5Wnt
+	qJhL+krWf991M5IuHNQuW51ur89RR6B3026euu+yCefBuWU4iez7WqPz391oPOGoIzAe
+	3fa/nFf/2YquL4kWjKT33cvOcDL1vBlHHQHPux8NWicHOX9JVo8t3YplSsetwcSbzxeL
+	xTeOGgI+6/lsOurW3b10OLj6BKzbidzheeduuvRBI2p0/GhZKvk6uPpU9I+tVSOGk8xX
+	6t2Rxw1RaOOnkvvh9UkpE1s3EkoW3EZv7HFBVBv5tpjf37ZPyzsxa21HQqldt9mf+EaU
+	39FfXzif3nXOytn4IyMfaQTz5VgaOT94xsgMc09/d+svI6v/2g3/1FruCI0Avhw0AoAu
+	VtKIiAcQ0ggAulhJIyIeQEgjAOhiJY2IeAAhjQCgi5U0IuIBhDQCgC5W0oiIBxDSCAC6
+	WEkjIh5ASCMA6GIljYh4ACGNAKCLlTQi4gGENAKALlbSiIgHENIIALpYSSMiHkBIIwDo
+	YiWNiHgAIY0AoIuVNCLiAYQ0AoAuVtKIiAcQ0ggAulhJIyIeQEgjAOhiJY2IeAAhjQCg
+	i5U0IuIBhDQCgC5W0oiIBxDSCAC6WEkjIh5ASCMA6GIljYh4ACGNAKCLlTQi4gGENAKA
+	LlbSiIgHENIIALpYSSMiHkBIIwDoYiWNiHgAIY0AoIuVNCLiAYQ0AoAuVtKIiAcQ0ggA
+	ulhJIyIeQEgjAOhiJY2IeAAhjQCgi5U0IuIBhDQCgC5W0oiIBxDSCAC6WEkjIh5ASCMA
+	6GIljYh4ACGNAKCLlTQi4gGENAKALlbSiIgHENIIALpYSSMiHkBIIwDoYiWNiHgAIY0A
+	oIuVNCLiAYQ0AoAuVtKIiAcQ0ggAulhJIyIeQEgjAOhiJY2IeAAhjQCgi5WiEW8hfpbh
+	nyDwy4gW+D1GKLXrNvsTGvkTyF+45tLIWTkbt9aNJAtuozf2FgtuyQsAXztezO9v26fl
+	ndi6ESeZr9S7I29OJa9N/IXrLXwjw+uTUiZmru6IbidyH847t1MaeQHga8e+kNnXwdWn
+	4lZk3YgVy5Q+twYTb04nrw1duJ5/Is1n07uburuXCgdXd0QLhtN77kV7OJl6/sw4agj4
+	rKf3o37r+CCXcIzfT1r+K8NOZEu1entwOxqPJxxFBMbj0d2w1zqr7m9GTH3NiG6GU4Vy
+	7eKqfdPt9TmKCPR63Zvr5olb3PFXZPXQCgQ0w4pu5kvVz2eXjUaTo4pAo35x+u/h2+xG
+	6MGKLJXY0VR2792Ho0rV5agiUK0clt/mtxNhU19fEf8E87ckHE9vZ9/kCxx1BPK5na1k
+	zN+QR0KWSkw7HItvJP1JcRQQWJJOJuLRkBV8SoivRDeClu04IY46Ao5tmc/4+PHopWm6
+	bnAUEtB1XXviwFp7EOYbEiABEiABEiCB/y+B75ER7IQKZW5kc3RyZWFtCmVuZG9iago0
+	MiAwIG9iagoxMjQzCmVuZG9iagozOSAwIG9iago8PCAvTGVuZ3RoIDQwIDAgUiAvVHlw
+	ZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDUwMiAvSGVpZ2h0IDQ2MiAv
+	Q29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNv
+	bXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3YW1fV9R5G
+	cVmLxUlAkRS1TSdDGR5opFvJPLQ1yEMiKiD0/t/Ihho1wnK696Wz+bvp4ltj9MyPf7RO
+	nOhVoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWo
+	QAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEKVKACFfjfCowNBsOe
+	rcBgMDb2Xv+xwXA0MTk13ZMVmJocjQ/f4z42HE2dnDu1cKbnKrBwen52ZnJ88Hfug+HE
+	yVOLSxf/tfxZT1Vg+dML587MTY/+5nMfG07OLl78YuXq9bW1b3qiAms3rq1eWl46PTP6
+	y9c+NpyY/WT58trtu/cfPOypCjy4t37z2qWLC4fs7/yZbjA6ubi8evPeo80nT5/1VAWe
+	/rTxcH3t6wunpt79GT+cOnXh8s0Hmz+/3H71uqcq8Gp769njuze+PDv7zsc+Nn5y8Yu1
+	e5svXu/u7b3tqQrs7e1sP390Z/Xi4cd+7Ef8YGJuaeX2o+ev9/b3Dw4OfulpChxy7r/d
+	3X5yf+3zxZnxY//1Npg8dfHq3c2Xu0fmqWvIfx1yxP7m+X9uXTr8EX9MfTi18K/r959s
+	7/Wlu8R/Z9958eOdlaW5d9SnF5bXHjx9tdeHLlT/5WB/Z2tj/cr5uYnj3/r0mc/WHj57
+	fahuXP2P37S/+3LzuysX5v+q/k3q2l8dR+p3V9+n/la7+5897A/1Y/93bnj4E/7oW0/d
+	+asjdacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q6
+	05VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS
+	5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1
+	dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VX
+	pc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7O
+	a+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacr
+	r0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59
+	nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pO
+	V16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd
+	+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfU
+	na68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16V
+	OvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+ziv
+	qTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68
+	KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdx
+	XlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtd
+	eVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu
+	47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3
+	uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq
+	3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym
+	7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq
+	1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5
+	Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTl
+	ValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP
+	85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3p
+	yqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValz
+	H+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q6
+	05VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS
+	5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1
+	dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VX
+	pc59nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7O
+	a+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59nNfUna68KnXu47ym7nTlValzH+c1dacr
+	r0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pOV16VOvdxXlN3uvKq1LmP85q605VXpc59
+	nNfUna68KnXu47ym7nTlValzH+c1dacrr0qd+zivqTtdeVXq3Md5Td3pyqtS5z7Oa+pO
+	V16VOvdxXlN3uvKqP9THTvzpDafPfPbNw2ev9w74n+76cRZ4v/pa6h8n6Qf/rQ8O9ne3
+	Nr67cn5+4p1vfWH5xoOnr/YO+tg/GPGj+xsO1Xe2NtYvL80dVx9Mnf702r2ftnf3Y//o
+	UD/wL3xw+N6+efH49sq52dGxb30wOX9hdX1ja+dt7B+I+NGdD9H3914/++Hbrz45OX5M
+	fWw0e+7SzR+ebe++3e/ZCrzde7O1+f315YXp4Z/+BH/ixNj4zJnla+uPn2+/2dntuQrs
+	7Lze+unBrZXz85ODY+onBhNzS5fW7j568vOLrZc9U4GtrRfPNh/+++ry4szx39aPPvbp
+	0xe/vnHn/qMfNzZ7pgIbG49/+P7W1c/Pzk0Oj/22fvjdD0YzCxe+XF27dWf9bs9U4Lv1
+	299eX1k+Oz91/M9yRz/sx4ajmVNnP/380sqV1Z6pwJXLK18tnz8zNzX+zu/qv7IPRlOz
+	pxbPLp2/0DMVOL907pMz8zOT44N3f77/xj4+MTUzOzffcxWYmz05PTn6y+/pR+ZHb2ww
+	HB9N9GwFRqPD7/zvPvTf2A/hD9+gpypwZPq7b3+tQAUqUIEKVKACFahABSpQgQpUoAIV
+	qEAFKlCBClSgAhWoQAUqUIEKVKACFahABSpQgQpUoAIVqEAFKlCBClSgAhWoQAUqUIEK
+	VKACFahABSpQgQpUoAIVqMD/WeC/aJaU4QplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2Jq
+	CjI3ODkKZW5kb2JqCjM3IDAgb2JqCjw8IC9MZW5ndGggMzggMCBSIC9UeXBlIC9YT2Jq
+	ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgMjQ2IC9Db2xvclNw
+	YWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50
+	IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZdrU5J7HEXl4Y6Aoilq
+	0c1QxwtNepTMS0eDvCQiAkLf/4scqKnAavemnj1zWr83vdhTq1nLP9TEBIcBDGAAAxjA
+	AAYwEI6BSBBEuVANBEEk8rO4kSAaTyRTaS5MA6lkPBb9cZNINJ6azE0VZrgQDRSm89lM
+	Mhb8oEkQTUxOzRaXHpUec+EZKD1cnJ/JpePfP5NINJmdXXpaXt+sVF5yYRmobG2sLZeK
+	05n4/VcSiSayD0orld39w6NjLjwDRwfV7Y3lpcIgyfj3exCfnC2tbR+c1M/OL7jwDJy/
+	rx1XKy8Wp1L3PreiqanFle2j+ofr5k2LC8/ATbNxcbq/9WwuO/5IIrHJ2aeVg/pVq9Pt
+	3nHhGeh2283Lk721pcEjGf3YChK5Ynn35LLV7fX6/f5HLhwDA9e9u07z7LDyZDYTG/0X
+	cJCcWlrfr193hj0oEk6OT5RhktvLf3eWBx9bo0WiqcKjzcOzZpcXEmKNL0naV+/2ysXc
+	eJF0oVQ5Or/p8kDCLvKx32s3atXVhVxi7I2kZx5Xji9agyKh/43+emCvc11/vbqY/67I
+	S4p4fjiGRfbXflLkzvN3+rupX4uM/q89OvjUGr4Rihh+OChikC6RFJF6DCNFDNIlkiJS
+	j2GkiEG6RFJE6jGMFDFIl0iKSD2GkSIG6RJJEanHMFLEIF0iKSL1GEaKGKRLJEWkHsNI
+	EYN0iaSI1GMYKWKQLpEUkXoMI0UM0iWSIlKPYaSIQbpEUkTqMYwUMUiXSIpIPYaRIgbp
+	EkkRqccwUsQgXSIpIvUYRooYpEskRaQew0gRg3SJpIjUYxgpYpAukRSRegwjRQzSJZIi
+	Uo9hpIhBukRSROoxjBQxSJdIikg9hpEiBukSSRGpxzBSxCBdIiki9RhGihikSyRFpB7D
+	SBGDdImkiNRjGClikC6RFJF6DCNFDNIlkiJSj2GkiEG6RFJE6jGMFDFIl0iKSD2GkSIG
+	6RJJEanHMFLEIF0iKSL1GEaKGKRLJEWkHsNIEYN0iaSI1GMYKWKQLpEUkXoMI0UM0iWS
+	IlKPYaSIQbpEUkTqMYwUMUiXSIpIPYaRIgbpEkkRqccwUsQgXSIpIvUYRooYpEskRaQe
+	w0gRg3SJpIjUYxgpYpAukRSRegwjRQzSJZIiUo9hpIhBukRSROoxjBQxSJdIikg9hpEi
+	BukSSRGpxzBSxCBdIiki9RhGihikSyRFpB7DSBGDdImkiNRjGClikC6RFJF6DCNFDNIl
+	kiJSj2GkiEG6RFJE6jGMFDFIl0iKSD2GkSIG6RJJEanHMFLEIF0iKSL1GEaKGKRLJEWk
+	HsNIEYN0iaSI1GMYKWKQLpEUkXoMI0UM0iWSIlKPYaSIQbpEUkTqMYwUMUiXSIpIPYaR
+	IgbpEkkRqccwUsQgXSIpIvUYRooYpEskRaQew0gRg3SJpIjUYxgpYpAukRSRegwjRQzS
+	JZIiUo9hpIhBukRSROoxjBQxSJdIikg9hpEiBukSSRGpxzBSxCBdIiki9RhGihikSyRF
+	pB7DSBGDdImkiNRjGClikC6RFJF6DCNFDNIlkiJSj2GkiEG6RFJE6jGMFDFIl0iKSD2G
+	kSIG6RJJEanHMFLEIF0iKSL1GEaKGKRLJEWkHsNIEYN0iaSI1GMYKWKQLpEUkXoMI0UM
+	0iWSIlKPYaSIQbpEUkTqMYwUMUiXSIpIPYaRIgbpEkkRqccwUsQgXSIpIvUYRooYpEsk
+	RaQew0gRg3SJpIjUYxgpYpAukRSRegwjRQzSJZIiUo9hpIhBukRSROoxjBQxSJdIikg9
+	hpEiBukSSRGpxzBSxCBdIiki9RhGihikSyRFpB7DSBGDdImkiNRjGClikC6RFJF6DCNF
+	DNIlkiJSj2GkiEG6RFJE6jGMFDFIl0iKSD2GkSIG6RJJEanHMFLEIF0ivxaJTHy7aHrm
+	8cvji1a3L38v458w8NMiFYr8Cd+/+jP7/V6nUXu9upBPjL+RQmnr6Pym2+eR/Erhb94H
+	RdqNWnWlmBsrEqSmH24cvG92eiT5zcb1H9cf3N3t1elueT4bH30jQTK/uFatNdp3JNEK
+	f/M6CNLrti7evnr+YDI2WiQSz84vb7+9aHbuelyoBu66t436m81SIR399i+tiYlILDNT
+	2qieXjZv2x0uRAPtdqvx/minvJBPBqNFJoJErrhc2T85+3DVuOZCM9BoXF3Uj/9ZL81m
+	xr5Gho8kPb30Ymvv8ORdrc6FZqBWO337Zmf9yVwuGR39Ghk8lyCeKSw+W6vs7FX3udAM
+	vK7uvtosl+byqbHv9eHnVyQaz0zNPXyyXF5d40IzsLpSfl5amMmlYuPfIp+SBPFUdmp2
+	rriwyIVmYKE4/2Amn0nGgnufWZ+TxBKpTDaX50I0kMtOppPx+98hwx7DiwTRWDzBhWog
+	Hh+8jx88kM9JBlEGF3DhGRgK/yKfXzGAAQxgAAMY+P8Z+A/zFAiFCmVuZHN0cmVhbQpl
+	bmRvYmoKMzggMCBvYmoKMTg0MQplbmRvYmoKMjUgMCBvYmoKPDwgL1R5cGUgL0V4dEdT
+	dGF0ZSAvQ0EgMC43ID4+CmVuZG9iagoyNiAwIG9iago8PCAvVHlwZSAvRXh0R1N0YXRl
+	IC9jYSAwLjcgPj4KZW5kb2JqCjI3IDAgb2JqCjw8IC9UeXBlIC9FeHRHU3RhdGUgL2Nh
+	IDAuNjUgPj4KZW5kb2JqCjI4IDAgb2JqCjw8IC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEg
+	Pj4KZW5kb2JqCjQzIDAgb2JqCjw8IC9MZW5ndGggNDQgMCBSIC9OIDMgL0FsdGVybmF0
+	ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AdVZZ1gU
+	zbLumU3AsqQl5xxFcpacJEgOgkha0pJzDkpSgiCIgICggAgighgIAiJgAkSCgBEJoiCo
+	YAIE4Q7q933nPuecf/fPneeZnnerqqtrp3q6p94BgG3ZLTjYH6YDICAwPNTKUIf3oIMj
+	L+4FoAQ0gBGIAUo3UliwtoWFKfivx/cJAO0qxyR3ff1Xs/+soPfwDCMBAFkganePMFIA
+	gq8DAOuQgkPDAUCtI/LhqPBgBKMfIJgxFAkQwS93sfdvvLKL3X9hDPqXjY2VLgAYVgAo
+	qN3cQr0BIAgict5Ikjfih6AHAJYh0IMcCADxIII1SD5uHgCwFSM2ewICgnZxH4JF3f/F
+	j/e/YDc39799url5/41//xekJzKwHjks2N8t5teP/8smwD8CuV+/DgakpQ70N9vNDTNy
+	Lni46ZkgV07k3A72/5UzxAZi9wy0tUZku3hPoLuZ+R+s4RVqYIVgpC9kERyus4uRewZ5
+	BYdb2PyRJ8b66JohmBqRF3iG6f/l55yvm/FuzmgQeXNohJUtggUR3B0Waa2PYGRGQW9i
+	fWzs/9h89fDU+yOHYS+ygdFvG5iBHG60OxYjknN+vyCT3RiQsWBFYAL8gSeIAKFIGwgk
+	gSnQBXp/WkngBdwQTSSiCwN+4C2CA5AeQUifIATz/rHT/TeJwa9+3ki//+2RF5AQ24i/
+	x/w9Gi8y5l8+ycADwX/J3ZAxdnW70YW5kJP/GfMvi11/v6KRrpdelN76Kya0MFoWrYDW
+	QaujNdAqgBfNjGYHkmh5tDJaG62JVkN0KsAAvEE8e/8V467/gGavyOKgGFU7H0S7+9/d
+	/9ICu1/W5L9//1sEgDy03LL8VwQAhHtGI88BALpBwTGhZG+fcF5t5Mn13MNrFEjau4dX
+	VlpGZlf9/+bYXbN+B/vF6tdaBDE//kcW0AiAMhmZj87/yNxPAtAuiTz79f/IhAuRtcEX
+	gAFBUkRo5G9/6N0LBlABWmSGsgFuIABEkfssCxSBGtAC+sAYmAMb4ACckfnjg8zBUBAF
+	4sFRkA6ywElwGpSAClAFakEDaAYtoAPcAffAABgG4+AFmAbzYAmsgO9gE4IgHESAiBAb
+	xAMJQRKQLKQMaUD6kClkBTlArpA3FAhFQPFQCpQF5UMl0HmoDroKtUF3oIfQCPQMmoEW
+	oc/QDxgFU8OMMBcsDEvByrA2bALbwIdhbzgEjoVT4Ry4GK6EL8M34TvwADwOT8NL8DcU
+	QOFRzCg+lCRKGaWLMkc5orxQoahEVCaqEFWJuoJqR91HjaGmUcuoDTQWTUTzoiWRebof
+	bYsmoUPQiehsdAm6Fn0T3YceQ8+gV9DbGAKGEyOBUcUYYQ5ivDFRmHRMIaYGcwNzFzOO
+	mcd8x2KxzFgRrBJ2P9YB64uNw2Zjz2Ibsd3YEewc9hsOh2PDSeDUceY4N1w4Lh13BncZ
+	dxs3ipvHrVPgKXgoZCkMKBwpAimSKQopLlF0UYxSvKPYpKSjFKJUpTSn9KCMocylrKZs
+	p3xMOU+5SUVPJUKlTmVD5Ut1lKqY6grVXaqXVF/weDw/XgVviSfjj+CL8U34B/gZ/AY1
+	A7U4tS61E3UEdQ71Repu6mfUXwgEgjBBi+BICCfkEOoIvYQpwjoNkWYvjRGNB00STSnN
+	TZpRmo+0lLRCtNq0zrSxtIW012gf0y7TUdIJ0+nSudEl0pXStdFN0n2jJ9LL0JvTB9Bn
+	01+if0i/wIBjEGbQZ/BgSGWoYuhlmCOiiAJEXSKJmEKsJt4lzjNiGUUYjRh9GbMYGxiH
+	GFeYGJjkmeyYoplKmTqZpplRzMLMRsz+zLnMzcwTzD9YuFi0WTxZMliusIyyrLFysGqx
+	erJmsjayjrP+YONl02fzY8tja2F7xY5mF2e3ZI9iL2e/y77MwcihxkHiyORo5njOCXOK
+	c1pxxnFWcQ5yfuPi5jLkCuY6w9XLtczNzK3F7ctdwN3FvchD5NHgIfMU8Nzmec/LxKvN
+	689bzNvHu8LHybefL4LvPN8Q3ya/CL8tfzJ/I/8rASoBZQEvgQKBHoEVQR7BA4LxgvWC
+	z4UohZSFfISKhO4LrQmLCNsLHxNuEV4QYRUxEokVqRd5KUoQ1RQNEa0UfSKGFVMW8xM7
+	KzYsDosriPuIl4o/loAlFCXIEmclRvZg9qjsCdxTuWdSklpSWzJSsl5yZi/zXtO9yXtb
+	9n6UEpRylMqTui+1La0g7S9dLf1ChkHGWCZZpl3ms6y4LEm2VPaJHEHOQC5JrlVuVV5C
+	3lO+XP6pAlHhgMIxhR6Fn4pKiqGKVxQXlQSVXJXKlCaVGZUtlLOVH6hgVHRUklQ6VDZU
+	FVXDVZtVP6lJqvmpXVJb2Ceyz3Nf9b45dX51N/Xz6tMavBquGuc0pjX5NN00KzVntQS0
+	PLRqtN5pi2n7al/W/qgjrROqc0NnTVdVN0G3Ww+lZ6iXqTekz6Bvq1+iP2XAb+BtUG+w
+	YqhgGGfYvR+z32R/3v5JIy4jklGd0YqxknGCcZ8JtYm1SYnJrKm4aahp+wH4gPGBUwde
+	mgmZBZq1mANzI/NT5q8sRCxCLG5ZYi0tLEst31rJWMVb3bcmWrtYX7L+bqNjk2vzwlbU
+	NsK2x47Wzsmuzm7NXs8+3376oNTBhIMDDuwOZIdWR5yjnWON47dD+odOH5p3UnBKd5o4
+	LHI4+vBDZ3Znf+dOF1oXN5drrhhXe9dLrltu5m6Vbt/cjdzL3FdIuqQi0pKHlkeBx6Kn
+	ume+5zsvda98rwVvde9T3os+mj6FPstkXXIJedV3v2+F75qfud9Fvx1/e//GAIoA14C2
+	QIZAv8C+IO6g6KCRYIng9ODpENWQ0yEroSahNWFQ2OGw1nBG5OVwMEI0Ii1iJlIjsjRy
+	Pcou6lo0fXRg9GCMeExGzLtYg9gLceg4UlxPPF/80fiZBO2E84lQontiT5JAUmrS/BHD
+	I7VHqY76HX2ULJ2cn/w1xT6lPZUr9UjqXJphWn06TXpo+uQxtWMVx9HHyceHMuQyzmRs
+	Z3pk9mdJZxVmbWWTsvtPyJwoPrGT45UzlKuYW34SezLw5ESeZl5tPn1+bP7cqQOnbhbw
+	FmQWfD3tcvphoXxhRRFVUUTRdLFpcesZwTMnz2yV+JSMl+qUNpZxlmWUrZ31ODtarlV+
+	pYKrIqvixznyuafnDc/frBSuLKzCVkVWva22q75/QflCXQ17TVbNz4uBF6drrWr76pTq
+	6i5xXsqth+sj6hcvO10ebtBraL0ieeV8I3NjVhNoimh6f9X16kSzSXPPNeVrV64LXS+7
+	QbyReRO6GXNzpcWnZbrVoXWkzbitp12t/catvbcudvB1lHYydeZ2UXWldu3cjr39rTu4
+	e/mO9525HpeeF70He5/0WfYN3TW5++Cewb3e+9r3bz9Qf9DxUPVhW79yf8uA4sDNQYXB
+	G48UHt0YUhy6+VjpceuwynD7yL6RrlHN0TtjemP3nhg9GRg3Gx+ZsJ14Ouk0Of3U4+nC
+	M/9nq88jn2++OPIS8zLzFd2rwinOqcrXYq8bpxWnO2f0ZgZnrWdfzJHmlt6EvdmaT31L
+	eFv4judd3YLsQseiweLw+0Pv55eClzaX0z/Qfyj7KPrx+ietT4MrB1fmV0NXdz5nf2H7
+	cvGr/Neebxbfpr4HfN9cy1xnW6/dUN64/8P+x7vNqC3cVvFPsZ/t2ybbL3cCdnaC3ULd
+	fr0LoJAW9vIC4PNF5D3BAakdhgGgovldU/yyQMoVCLFBsB20F1qCz6Kc0ULo95hubDEu
+	mMKKUp9KES9FvZcgQaNMa0LnSh/BcJrYxjjDTM2izRrK1sC+xCnG5cvdxLPOp8d/UmBW
+	SEb4mMgrMQXxkxLLkvp7q6S2ZZxk2+XZFaIVx5XlVHJUl/cZqp/T+KFlpX1BZ0PPRL/E
+	YGG/vFGccZcpdEDLLNa8yWLOit5a3cbDNs3unP21g7cdeh27D7U5NR6ucS5zOema7Bbi
+	7kwy9VDy5PcieK15z/j0k5t9S/yS/ckBFoEKQSxBa8FjIfWhSWHm4TzhnyK6InOinKIl
+	on/E9MeWxJHjlROwCWOJFUn+R3SOCiYzptCm0qXRp9MdIxynzEBn7GRuZH3OXjoxm/M8
+	d/TkQF5PftupKwVVp88U5hSlFMediSlJLi0uu3F2uHy2YvncyvmVypWqT9UfL3yoWbq4
+	UPumbubSXP1qA/0V3cbEpparr5vXr+NuEG/ytIi3KrRpthvdsu5w74zuKr59p3uhB91L
+	7GO/y3tP/L7SA52HOv2i/Z8GMgfZBs8/0ny0PNTwOHRYZQQaeTRaPhbyRH+cbfzjRO9k
+	0VOfZ4rPdp53v4h9Kfdy+VXDVNjrfdPY6dGZslmvOZm5zTf35gveer5TXWBYeL/Y9T57
+	yX6Zb3nxw9WPsZ90VvAr46sNn8u/XP+69t1r7fmG1o+CzemfctsFOzu/8i8ANcEOKAbU
+	A3Q6xgTLhH2Fu0aRTelPZYvXo5YjiNEI0YrSSdErMBgQ7RgDmVKZq1j6WJfY6Tk0OMlc
+	JdyDPDt8yvzhAlcE3wtLiPiI1ootSUjuCZW8sXdDWlPmqOx9ebyCqWKO0ogKUdVCLWdf
+	vwZWU1MrUrtW54UeXl/VwN0wY3+90YDxoil8gMVMxFzOQtVS1UrOWtCGxuab7XO7bvvq
+	g5kOgY7Wh5ScOJx2Ds8697nUuKa7ebhrkThJax4jnvVead7OPkpkOvKC722/Iv/AAP1A
+	9sAPQbeDc0IcQ/lDF8OawqMiVCN+RnZFJUVrxaBjHsSeiLOIJ8aPJxQlHkJW1pUjvUcr
+	klNSAlMd0wzT5Y/xHac+vpYxmzmYdTP73InjOaG5h0+a5mnmK5zaWyB6mr+Qs4ilmP4M
+	VQm6ZKv0a9nS2enyyYqRc8PnxytfVy1Vr9egLtLUstUJXpKu33fZoMH8ikOjZ1Pk1ezm
+	2mt916durLZArXRtfO1ytww6DnUGd6XfLu2uu9PQU917si/8rs092fv091cfPEHWpoqB
+	tEG/R5ZDyo/5hvHD6yNzo4/Gmp8UjSdMkCZNnso/43qOeb784snLW6+qpk68jp8OnvGb
+	DZgLf5Mwn/42713pwoXFpvftS73Ljz68+Li+orJa/UXnG/771/WFH6NbldsOf/LPCZ2A
+	ReEBVACaAz2AScZqYNdxnRTHKB2o5PA0+AXqh4RrNOW0J+hS6GMZIokxjDFMCczpLLms
+	Z9ka2fs4nnJ+5CbwCPLq8LnypwhUCd4VWhShEZURsxWPk6jY0ye5KEUvrSTjKBsnVy5/
+	W2FKcVuZQ0VF1UqNvC9RPU+jSvOqVof2XZ1+3UG9Af37BrcNr+2vNMo0DjQxMeU1/Xrg
+	nlmROdlCxRJnOWF1wTrMRsuW2nbSrto++KCaA9Zh2LHkkKfTXqfvh7uc013MXImuk24l
+	yDrBQ5r2OOfp6sXj9dr7nI8rmYc85XvWz8Gf6D8UkBGoHwQF3QoODxEJeRp6PEwp7F14
+	YYRexOfIc1FmUZvRdTF2sXBsY9yheEx8U8KhRExiU5LzEcYjI0cLkz1TlFNpUufTOtML
+	jvkd185gyfiQeSerINvrhFIOVc50buvJ/LzQfOtTCgVsBdun3xT2FzUWnzoTWeJQqlrG
+	juyW4+U3KkrPnTifXplalVZ97MKxmrSLCbUBdQcv6derXVZvMLni1hjfVHz1evOja/PX
+	N2/Stwi37muzbPe+ldhxuvNSV8ft+939dx723O2909d5t/XetfsNDy4+rOg/M5A/mP0o
+	fSjlcdpw3kjt6MOx1XGuCaPJyKeVz4aeb7wUfGU9lft6eoY8x/rm2zvMYuJy7+qpdcHd
+	/P/mlnb3BKwiADUI72F3BABLRFNrCYBQAUJxtAFgQQDARgXAfmkApl8CUJno3/sHBNAI
+	A0eHVJwCQAqoI8zGIYRLSAT5oAbcAiNgEakX2SF5yBzyg45BF6BeaBaGYQFYH6n0suBG
+	+An8A6nn9qNCUCWoPtQnZA4aoiPQVegxDAojj1RkJZghLAqrgg3G1mJncZy4g7gC3CgF
+	PYUlxSmKcUo2ShfKGsqPVMpUKVTDeG58IL6bmpHal/oOgYMQRRinUaQ5Q7ND6007SqdN
+	d41enL6GQYShkahGHGR0YfzKdIJZnHmAJZiVhbWXLYSdn32C4wTnfi4s1z3uTB5LXk7e
+	D3x9/FUCWYKxQgHCHiIuos5iruKeEgF7YiQz9pZLtUtPyryX/Sj3Rv6JQq/iTaUrypdU
+	6lQvqTXta1Xv0xjTnNfa0KHVFdMz0Pc2yDK8uv+FMc5E1tT+QKhZinmuRblli9ULG0pb
+	DbsoZL/77Ch/KNrpjjPBxcm1zm2ZxOWh6WnvFeB93KeZ/MFPyT8j4HWQYvDJkI/I/tYc
+	yRQVHt0fyxLnHF+bsJPkc2Qm2S3ldZpD+vhxh4ytrIWcnLyzBeyFxsXBJcVlreVD52Yq
+	v1+guShWZ1If3dDexN1ceUOipbxtp8Op69Yd3t7MuxsPfPrHHsk/zhqZe3JgYuiZ64uN
+	qaIZ5bnXb1MXNpf4l7c/Vq8IrlZ8Yfta+V1j7d1G8abO1tR26K/1A0I4BzwgAi6EgVVC
+	+B57QEZYhTxwEXSBCfAJokI4Ah3IBUqEyqEuaBrJvTBsDAfDhXAX/BZFh1JFeaLyULdR
+	H9Cc6ANIhX4V/QbDhjHDpGE6kepbGuuP5P0tTgjnhavFLVFIUURQdFJiKS0oz1K+p1Kl
+	yqJ6jZfHZ+HfUGtSn6X+SXAl3KWRpCmixdBG0i7Rkeim6d3p3zPEEGmJlxgNGReYsphl
+	mJ+zpLPKs75lK2W34aDjGOUs5nLnluIBPOO8DXwZ/N4CxoIyQhzCFMKbIl9Fv4ptSRD2
+	CEhq7HWVypBuk3kvxylvoZClOKhMr2KvekZtTB3SENY00PLSPq7ToDuuDxvIGnrtP2s0
+	acJsaneg0GzMgsbS0CrJut1mzU7RPvpgpyPmkIVTxeHPLsau1W4/SZbIOvXeW84ngTzg
+	x+UfEnAviCs4MmQsTD68KGIryiW6K5Y1LjD+XqJAUuaR9WTflFdpFum9x5UyGrL4s0ty
+	WHIr8lTzPxS0FhYVJ5eElLmUG5+Tr+Spprmwc/Fz3dv6pw0PGjuutl27c+Nxy6u2pVsb
+	XVTdvD2qfQfvxTwo7W8fHB56Mfx0dPBJx8Tlp2ef5708NpU0HTMb9Sb6bdxC9PvDy8wf
+	aj6xrJBXqz6Pf1n7xvJdbs1iPWzjzI9HW7ifltvVf/KPBQTAgjz9MkAH4Zd8QAIoQDik
+	+2AW7EBc0D7oMJL789A95C2TAVaFSfAJuBWeRxFR2ghzU4WaQFMi7GIE+jJ6HsODOYQp
+	xkwgjIs9tgQ7hRPA+eKu4bYpjCmKKRYQxuQE5RyS8wKqFbw5vomaSB1DPUswI3TSSNNc
+	oOWhLaPjpqtGeIs+BhcijOTbngnHdIs5nEWaZYX1OlsCuxEHK8cyZx/XOe4kHhKvKZ8K
+	v7gAnyCPEJ+wmIiiqJGYi3iMRNGedslZKQZpY5l02V55jIKlYoMyUSVJdXUfWX1B01/r
+	u066Hqd+u6GLEd64w5RshjHPsgRWQdavbM3sepA9qfWQilO3s5nLjFs0idajykveu5ts
+	4jvpTwpYDToawhTaGH4gYiXqTIxxHBTfmkhK2j6ak8KaWpkueawzwyZzPftKTuBJ8byx
+	U74FXwojir6diSrZKksvZ6yoOa9WOVYdUEN1sbZu/6XFy9lX5BvfXD1/zf+GXgt/G7p9
+	sWOkq7O7oaeyr+RewYO8/tzB3KGs4YRR5yfS498mm58FvBB7+XbqwrTXrPjc6nzHu7RF
+	vfery8c/fP5ktJK92vL51Zflrxvf5r4/XMtf37f+diN1Y+NH4I+5zYObt7cYt8hbXT8Z
+	f5J/dm1TbFtsF2+/3hHZCdpp2c1/mJec7O7uASBqHYR+nNrZ+SIMAC4fgJ95OzublTs7
+	P6uQYgP5BtLt//t7xa4xFuHcy27tov90/A/oHZP+CmVuZHN0cmVhbQplbmRvYmoKNDQg
+	MCBvYmoKNTk1MwplbmRvYmoKMzYgMCBvYmoKWyAvSUNDQmFzZWQgNDMgMCBSIF0KZW5k
+	b2JqCjQ1IDAgb2JqCjw8IC9MZW5ndGggNDYgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2
+	aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AYVUz2sTQRT+Nm6p
+	0CIIWmsOsniQIklZq2hF1Db9EWJrDNsftkWQZDNJ1m426+4mtaWI5OLRKt5F7aEH/4Ae
+	evBkL0qFWkUo3qsoYqEXLfHNbky2perAzn7z3jfvfW923wANctI09YAE5A3HUqIRaWx8
+	Qmr8iACOoglBNCVV2+xOJAZBg3P5e+fYeg+BW1bDe/t3snetmtK2mgeE/UDgR5rZKrDv
+	F3EKWRICiDzfoSnHdAjf49jy7I85Tnl4wbUPKz3EWSJ8QDUtzn9NuFPNJdNAg0g4lPVx
+	Uj6c14uU1x0HaW5mxsgQvU+QprvM7qtioZxO9g6QvZ30fk6z3j7CIcILGa0/RriNnvWM
+	1T/iYeGk5sSGPRwYNfT4YBW3Gqn4NcIUXxBNJ6JUcdkuDfGYrv1W8kqCcJA4ymRhgHNa
+	SE/XTG74uocFfSbXE6/id1ZR4XmPE2fe1N3vRdoCrzAOHQwaDJoNSFAQRQRhmLBQQIY8
+	GjE0snI/I6sGG5N7MnUkart0YkSxQXs23D23UaTdPP4oInGUQ7UIkvxB/iqvyU/lefnL
+	XLDYVveUrZuauvLgO8XlmbkaHtfTyONzTV58ldR2k1dHlqx5erya7Bo/7FeXMeaCNY/E
+	c7D78S1flcyXKYwUxeNV8+pLhHVaMTffn2x/Oz3iLs8utdZzrYmLN1abl2f9akj77qq8
+	k+ZV+U9e9fH8Z83EY+IpMSZ2iuchiZfFLvGS2EurC+JgbccInZWGKdJtkfok1WBgmrz1
+	L10/W3i9Rn8M9VGUGczSVIn3f8IqZDSduQ5v+o/bx/wX5PeK558oAi9s4MiZum1Tce8Q
+	oWWlbnOuAhe/0X3wtm5ro344/ARYPKsWrVI1nyC8ARx2h3oe6CmY05aWzTlShyyfk7rp
+	ymJSzFDbQ1JS1yXXZUsWs5lVYul22JnTHW4coTlC98SnSmWT+q/xEbD9sFL5+axS2X5O
+	GtaBl/pvwLz9RQplbmRzdHJlYW0KZW5kb2JqCjQ2IDAgb2JqCjczNwplbmRvYmoKOCAw
+	IG9iagpbIC9JQ0NCYXNlZCA0NSAwIFIgXQplbmRvYmoKNDcgMCBvYmoKPDwgL0xlbmd0
+	aCA0OCAwIFIgL04gMSAvQWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0ZsYXRl
+	RGVjb2RlID4+CnN0cmVhbQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1b
+	ldKiGGffuqOzM9Ob2TXFkwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k7
+	3/v9/X7fe0RtnabvOylBVHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS
+	2LLex7V2+/Y9tZVlYCHqLba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw
+	09GcdKWyLZFT5qIoKq9iO0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9f
+	VPZsNRSnDeOcSEMaKfKu1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCo
+	ibXpspkdhX0AdirL7BDwBejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDO
+	FK7F8dqKH14tAUP3VCNojHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd
+	+67qJe57AnfT4zvRmzkLXKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3
+	HtURG2ejUoFWeo1Xxk/jufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFW
+	cWUL3f/HMoSP2Sc5psHToVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwl
+	uktUbinU6j2DSqwcK9gAdnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgp
+	KBPNs0RmlLFbo+TdeNv9ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+
+	XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtk
+	kf0PQBn9ZgplbmRzdHJlYW0KZW5kb2JqCjQ4IDAgb2JqCjcwNAplbmRvYmoKMTYgMCBv
+	YmoKWyAvSUNDQmFzZWQgNDcgMCBSIF0KZW5kb2JqCjQgMCBvYmoKPDwgL1R5cGUgL1Bh
+	Z2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMyAwIFIg
+	XSA+PgplbmRvYmoKNDkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL091dGxpbmVzIDIg
+	MCBSIC9QYWdlcyA0IDAgUiAvVmVyc2lvbiAvMS40ID4+CmVuZG9iagozNSAwIG9iago8
+	PCAvTGVuZ3RoIDUwIDAgUiAvT3JkZXIgMSAvRW5jb2RlIFsgMCAxMzY0IF0gL0Z1bmN0
+	aW9uVHlwZSAwIC9CaXRzUGVyU2FtcGxlCjggL0RlY29kZSBbIDAgMSAwIDEgMCAxIF0g
+	L0RvbWFpbiBbIDAgMSBdIC9SYW5nZSBbIDAgMSAwIDEgMCAxIF0gL1NpemUgWyAxMzY1
+	Cl0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBtcKJVgFRAADQ7zL76kuz
+	RZbIIJJ1BqGUypItSynCF3Tq5DijMebNvHfPLW3spWOVjR342q4YLSprVXktHrkSZXiL
+	K1H1SywiuhSLS7EAuVBY/l4IBa35hQDhp5A3NvcpgP0QchZmPwS9cyGrl8/OwWbm/O47
+	n0H3jc+88dcozvjrw9Mz3nAuPft3yqVBXk05gBPuytrUhNM+5lIIJsfcz1fNbPIVxhGb
+	3L4csTAP2UvdiSFr/oBNAI4P2G0mPtDdZ+KWx/qMxh4TQ1PqMdILyl1G+ktLXToKd4eO
+	6r7o0Ca36QvwkTZtaIuOAKcirf3hFqXxmQqjef5EIfxInauHHilom2To2GCTNPOBDJoa
+	eCCPvycDkPrvyf0N0m8o4W8AP7sjUL0lzrT6bgkI64TPWG+dMBb31rdruNfs0xqut4qf
+	Qu2p4rs3uAfdCu6p4O6DMXfF7DLmPtBVxqwuYS7DnSUMrII5LXQo2LbNoajLNgfsJ7Lt
+	b9F2AvIbCq+1owplbmRzdHJlYW0KZW5kb2JqCjUwIDAgb2JqCjM4NAplbmRvYmoKMzQg
+	MCBvYmoKPDwgL0xlbmd0aCA1MSAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAgMTM2NCBd
+	IC9GdW5jdGlvblR5cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAwIDEgMCAx
+	IDAgMSBdIC9Eb21haW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBdIC9TaXpl
+	IFsgMTM2NQpdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AY3CCTdUcRgH
+	4C8mEolEIpGSkpKSEolEIhljxqxmDGNm7Pu+71tf6/29neuY073jf+99n/Pw3wTbjPOl
+	cIwvTV7E2HCMLySjfKF7HmXTo3wuOcJnwhE+M3kaYcNhPpUM86nuSZhNh/hE8DjEx0Oy
+	QT42eRRkwwAfCfv5KPnQz6Z9fCh44OMDr7iHD1T3PWw4yPvCbt5P3nOzVRfvXceeS33X
+	hd0BcSd2VXecSN2PHUkHdq5uO2CzD9t2t/qg/SPbiy3VzV6k/o1N4R5s9mDDdjc27K53
+	Q/tLtgvrqmtdSP0Ta8KdWOvEqu0OrNpd6YD2h3g7Vm5cbkfq71gWbsNyG5YkW7FkebEV
+	2m/iLVg0XmiB+lcsSDZjoRnzkk2YtzzXhOtfMCfZiDnj2Uaof8as8CfMSDZgxvJ0A65/
+	xLRwPaZ1p+qh/gFTwu8xKVmHSfMTdfj/HSaEazGhO14L9bcYF36DhHANEoqUqKG4/muK
+	C1dTXDdWTaZfUUzyJY0JV9GYyWgVGb6gqGQlRXVHK8n0cxqVHXlGohU0YjJSQYZPKSJc
+	TpHk4XIyXUbDguEyCj8RL6WwaqiUDB9TSLiEQslDJWS1mIbsBosp+Ei8iIKqgSIyfEgB
+	4UIKJPsLyWoB+e36Csj3QDyffKrefEp9n7ySeeS96skjm7nksTuYS9p7sjk0qOrOodR3
+	yS2cTe5sctnOIpfdgSzS3hHPpIEbnZmU+jY5hTPImUH9kunUb9mRTtpb4mnkSPsHinMK
+	nAplbmRzdHJlYW0KZW5kb2JqCjUxIDAgb2JqCjU3MgplbmRvYmoKMzMgMCBvYmoKPDwg
+	L0xlbmd0aCA1MiAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAgMTM2NCBdIC9GdW5jdGlv
+	blR5cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAwIDEgMCAxIDAgMSBdIC9E
+	b21haW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBdIC9TaXplIFsgMTM2NQpd
+	IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AaXChVJCUQBAwb+2u7u7sekG
+	FQMDW7ED61OOMTL48MWNnU1+kLSY+OD7u+L4O8XfiAuPvWH3lZjt6CsSX4gaR15QnCOS
+	I6w9lCP0rD74jOETQZmBJ+w+ErDtf0T0A/5/fQ+ovMf303uPZs8dOt13GN7ilrl6i+Ub
+	Vp2u3CD0mhWzy9dIv2I5f+kKzYtZdC5kKbxkQfL8JeYvmBfoukDoOS6zc+dIP2Muf/YM
+	rafM6J0+5fcJ0/KnTjB/zJTAyWOcHzFpceIIuYdM/Dl+iPoM4xnG9I5m+H3AqPyRA0zu
+	MyJ2eB+HewxbH9pD4i5DxoO7qE8zmGZAb3+a7zuK+3Yovk2f8N5tHG7Ra71nC4mb9Bh3
+	b6I4RffPrhQ6O1N0bqjv2KD4Oh3C29exu0a77bY1RCdp+7c1icoErfktCXQ2J2iOq2+K
+	YxijSWZjDMtRGp02RBEaocFsfQSVYerz68LorA2hsyZEYZAaydVBLAeodloVQKifKrOV
+	fqT7qPyzwod6L+V6y7wUeiiTXOrBvJtSgSVuvn4CXuWIVQplbmRzdHJlYW0KZW5kb2Jq
+	CjUyIDAgb2JqCjQxMAplbmRvYmoKMzIgMCBvYmoKPDwgL0xlbmd0aCA1MyAwIFIgL09y
+	ZGVyIDEgL0VuY29kZSBbIDAgMTM2NCBdIC9GdW5jdGlvblR5cGUgMCAvQml0c1BlclNh
+	bXBsZQo4IC9EZWNvZGUgWyAwIDEgMCAxIDAgMSBdIC9Eb21haW4gWyAwIDEgXSAvUmFu
+	Z2UgWyAwIDEgMCAxIDAgMSBdIC9TaXplIFsgMTM2NQpdIC9GaWx0ZXIgL0ZsYXRlRGVj
+	b2RlID4+CnN0cmVhbQp4Aa3BBwKBAABA0ftfSTRUtDWMFu00dQV34L+3bT/6bB/OylmW
+	daHMy8yZpnmijNPIGUDv4c3pQV3fUdqu5TRN21DqpuZUVV1RyqrkFKBX8eI8Qfkzp2R5
+	xknTLKUkacKJ4ySmPOIH5w663W+cKyi6RpQwCjlBEAYUP/A5F5B38TguyHEdjg2ybIti
+	WibIMA3K2ThzTiD9pHM0kKqpnCNIOSoUWZFBkixRREnkHED7w54jgHbC7n9fqv5GzApl
+	bmRzdHJlYW0KZW5kb2JqCjUzIDAgb2JqCjE4OAplbmRvYmoKMzEgMCBvYmoKPDwgL0xl
+	bmd0aCA1NCAwIFIgL09yZGVyIDEgL0VuY29kZSBbIDAgMTM2NCBdIC9GdW5jdGlvblR5
+	cGUgMCAvQml0c1BlclNhbXBsZQo4IC9EZWNvZGUgWyAwIDEgMCAxIDAgMSBdIC9Eb21h
+	aW4gWyAwIDEgXSAvUmFuZ2UgWyAwIDEgMCAxIDAgMSBdIC9TaXplIFsgMTM2NQpdIC9G
+	aWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AbXCiVYBUQAA0O8y++pLs0WWyCCS
+	dQahlMqSLUspwhd06uQ4ozHmzbx3zy1t7KVjlY0d+NquGC0qa1V5LR65EmV4iytR9Uss
+	IroUi0uxALlQWP5eCAWt+YUA4aeQNzb3KYD9EHIWZj8EvXMhq5fPzsFm5vzuO59B943P
+	vPHXKM7468PTM95wLj37d8qlQV5NOYAT7sra1ITTPuZSCCbH3M9XzWzyFcYRm9y+HLEw
+	D9lL3Ykha/6ATQCOD9htJj7Q3Wfilsf6jMYeE0NT6jHSC8pdRvpLS106CneHjuq+6NAm
+	t+kL8JE2bWiLjgCnIq394Ral8ZkKo3n+RCH8SJ2rhx4paJtk6NhgkzTzgQyaGnggj78n
+	A5D678n9DdJvKOFvAD+7I1C9Jc60+m4JCOuEz1hvnTAW99a3a7jX7NMarreKn0LtqeK7
+	N7gH3QruqeDugzF3xewy5j7QVcasLmEuw50lDKyCOS10KNi2zaGoyzYH7Cey7W/RdgLy
+	GwqvtaMKZW5kc3RyZWFtCmVuZG9iago1NCAwIG9iagozODQKZW5kb2JqCjMwIDAgb2Jq
+	Cjw8IC9MZW5ndGggNTUgMCBSIC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVu
+	Y3Rpb25UeXBlIDAgL0JpdHNQZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEg
+	XSAvRG9tYWluIFsgMCAxIF0gL1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEz
+	NjUKXSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGlwoVSQlEAQMG/tru7
+	u7HpBhUDA1uxA+tTjjEy+PDFjZ1NfpC0mPjg+7vi+DvF34gLj71h95WY7egrEl+IGkde
+	UJwjkiOsPZQj9Kw++IzhE0GZgSfsPhKw7X9E9AP+f30PqLzH99N7j2bPHTrddxje4pa5
+	eovlG1adrtwg9JoVs8vXSL9iOX/pCs2LWXQuZCm8ZEHy/CXmL5gX6LpA6Dkus3PnSD9j
+	Ln/2DK2nzOidPuX3CdPyp04wf8yUwMljnB8xaXHiCLmHTPw5foj6DOMZxvSOZvh9wKj8
+	kQNM7jMidngfh3sMWx/aQ+IuQ8aDu6hPM5hmQG9/mu87ivt2KL5Nn/DebRxu0Wu9ZwuJ
+	m/QYd2+iOEX3z64UOjtTdG6o79ig+DodwtvXsbtGu+22NUQnafu3NYnKBK35LQl0Nido
+	jqtvimMYo0lmYwzLURqdNkQRGqHBbH0ElWHq8+vC6KwNobMmRGGQGsnVQSwHqHZaFUCo
+	nyqzlX6k+6j8s8KHei/lesu8FHook1zqwbybUoElbr5+Al7liFUKZW5kc3RyZWFtCmVu
+	ZG9iago1NSAwIG9iago0MTAKZW5kb2JqCjI5IDAgb2JqCjw8IC9MZW5ndGggNTYgMCBS
+	IC9PcmRlciAxIC9FbmNvZGUgWyAwIDEzNjQgXSAvRnVuY3Rpb25UeXBlIDAgL0JpdHNQ
+	ZXJTYW1wbGUKOCAvRGVjb2RlIFsgMCAxIDAgMSAwIDEgXSAvRG9tYWluIFsgMCAxIF0g
+	L1JhbmdlIFsgMCAxIDAgMSAwIDEgXSAvU2l6ZSBbIDEzNjUKXSAvRmlsdGVyIC9GbGF0
+	ZURlY29kZSA+PgpzdHJlYW0KeAGtwQcCgQAAQNH7X0k0VLQ1jBbtNHUFd+C/t20/+mwf
+	zspZlnWhzMvMmaZ5oozTyBlA7+HN6UFd31HaruU0TdtQ6qbmVFVdUcqq5BSgV/HiPEH5
+	M6dkecZJ0yylJGnCieMkpjziB+cOut1vnCsoukaUMAo5QRAGFD/wOReQd/E4LshxHY4N
+	smyLYlomyDANytk4c04g/aRzNJCqqZwjSDkqFFmRQZIsUURJ5BxA+8OeI4B2wu5/X6r+
+	RswKZW5kc3RyZWFtCmVuZG9iago1NiAwIG9iagoxODgKZW5kb2JqCjIgMCBvYmoKPDwg
+	L0xhc3QgNTcgMCBSIC9GaXJzdCA1OCAwIFIgPj4KZW5kb2JqCjU4IDAgb2JqCjw8IC9Q
+	YXJlbnQgNTkgMCBSIC9Db3VudCAwIC9EZXN0IFsgMyAwIFIgL1hZWiAwIDczMyAwIF0g
+	L1RpdGxlIChDYW52YXMgMSkKPj4KZW5kb2JqCjU5IDAgb2JqCjw8ID4+CmVuZG9iago1
+	NyAwIG9iago8PCAvUGFyZW50IDU5IDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9Y
+	WVogMCA3MzMgMCBdIC9UaXRsZSAoQ2FudmFzIDEpCj4+CmVuZG9iago2MCAwIG9iago8
+	PCAvTGVuZ3RoIDYxIDAgUiAvTGVuZ3RoMSAxMDM5MiAvRmlsdGVyIC9GbGF0ZURlY29k
+	ZSA+PgpzdHJlYW0KeAG9Wnl4U9eVP/e+VZstydoXS0KWZHlfwNjYYMXYxiw2ZglYNAbb
+	YDAEJ0DALFOok0AAh5AQwhJI05IFDJQgjBtEKAzNmJJMM03SoSSl6bSZkjbTL/7SmSFt
+	B5A05z0ZB/y1+fJHvr6nc/fl3N8999xz79PqVWvaQQPdwEDjvNYVi0F+/H8CIL0LO1tX
+	JONpIvrvLOxa7U7GuUwAZvniFUs6k3HxOQClc8ny9UP1DZis7+5ob12UzIfb6Jd0YEIy
+	Tkajn9HRuXpdMq7vR3/28ocXDuWnXcF4TmfruqH+4SOMux9q7WxPlve/g37GiocfWT0U
+	70Z/2opV7UPlSRPy9y4QTDXCw6CAB0EAClp8mwGET5VOYDFXysdnUY5q94LUii9AJw0T
+	YEH907L/E8+Prv61/XZAtUv8P0xQ3Ckv+XwwHgRQE8wfVO0azpHroWOMwqzsKExGqkQa
+	g5SdfZ8FuslheAbp+0gMLCVPwnqk7UjPI7HDoaMYO0ue7GPF0BtkPdjIlJCKdc02WF0W
+	pcr18yjh+190/dLyu3PEirP3MbH2aUBxn5J8n3wPFoGLvAo+sgHqIJMcOB1c7mrBrKOw
+	AqkbiZFdQo72pRe5LpAc8LEE6/ghnSWvu/5QmOv6pDBKSZ/rzUCURe/H6RgLpbouOl90
+	/bNziesC0vFk1rEglnjdddS53LU7PUoO9LmedUYJ1tmV9NY4serrrs7gXteiQjl/2t4o
+	Pd7nKsP8OSGVq6TU4xrjvO7KD0RFgvFc5zRXVuG/uTKwIhZzY6O+kM7lcO52jcOsdGdN
+	YBzSOXKMHIQscrDPN8X1BgZxuKcnB0v3Rsk/na7LLPRFyYZQSV3m3mBdwBec5vIFawMB
+	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
+	yrv7XzgivmhEXMb9Ln6XjMhfOiIufbu/u335P4B31X9oRP7DI+KrRsTl//DdVX+9lP//
+	kHV4XQplbmRzdHJlYW0KZW5kb2JqCjYxIDAgb2JqCjY3NzUKZW5kb2JqCjYyIDAgb2Jq
+	Cjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0IDcx
+	NyAvRGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4MSAxNDQ1
+	IDExMjJdIC9Gb250TmFtZSAvWFZIWVRVK0hlbHZldGljYSAvSXRhbGljQW5nbGUgMAov
+	U3RlbVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA2MzcgL0ZvbnRGaWxlMiA2MCAw
+	IFIgPj4KZW5kb2JqCjYzIDAgb2JqClsgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDY2Nwo2Njcg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCA4MzMgMCAwIDAgMCA3MjIgMCAwIDAgMCA5NDQgMCAw
+	IDAgMCAwIDAgMCAwIDAgNTU2CjAgNTAwIDU1NiA1NTYgMCA1NTYgMCAyMjIgMCAwIDIy
+	MiA4MzMgNTU2IDU1NiAwIDAgMzMzIDAgMjc4IDAgMCAwIDAgNTAwIF0KZW5kb2JqCjIz
+	IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQg
+	L1hWSFlUVStIZWx2ZXRpY2EgL0ZvbnREZXNjcmlwdG9yCjYyIDAgUiAvV2lkdGhzIDYz
+	IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAxMjEgL0VuY29kaW5nIC9NYWNSb21h
+	bkVuY29kaW5nCj4+CmVuZG9iago2NCAwIG9iago8PCAvTGVuZ3RoIDY1IDAgUiAvTGVu
+	Z3RoMSAxMTg5MiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHdent4U1W2
+	+NrnnZOkTdK82zRJkzZ9pA9KHwQKTUtbCm2gFAotttICZQoDCojIY2AQ1ELBEZ1RELnj
+	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
+	MgovRm9udEJCb3ggWy0xMDE4IC00ODEgMTQzNiAxMTU5XSAvRm9udE5hbWUgL0pBRUVD
+	UStIZWx2ZXRpY2EtQm9sZCAvSXRhbGljQW5nbGUKMCAvU3RlbVYgMCAvTWF4V2lkdGgg
+	MTUwMCAvWEhlaWdodCA2NDQgL0ZvbnRGaWxlMiA2NCAwIFIgPj4KZW5kb2JqCjY3IDAg
+	b2JqClsgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA3MjIKMCA3MjIgMCA2NjcgNjExIDc3OCAwIDAg
+	MCAwIDYxMSA4MzMgMCAwIDAgMCA3MjIgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAow
+	IDU1NiAwIDU1NiA2MTEgNTU2IDAgNjExIDYxMSAyNzggMCA1NTYgMjc4IDg4OSA2MTEg
+	NjExIDYxMSAwIDM4OSA1NTYgMzMzCjYxMSAwIDc3OCAwIDU1NiAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjExCl0KZW5kb2JqCjE3
+	IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQg
+	L0pBRUVDUStIZWx2ZXRpY2EtQm9sZCAvRm9udERlc2NyaXB0b3IKNjYgMCBSIC9XaWR0
+	aHMgNjcgMCBSIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDIyMyAvRW5jb2RpbmcgL01h
+	Y1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjY4IDAgb2JqCihNYWMgT1MgWCAxMC42Ljgg
+	UXVhcnR6IFBERkNvbnRleHQpCmVuZG9iago2OSAwIG9iagooRDoyMDExMTEyOTE3MTM1
+	MVowMCcwMCcpCmVuZG9iagoxIDAgb2JqCjw8IC9Qcm9kdWNlciA2OCAwIFIgL0NyZWF0
+	aW9uRGF0ZSA2OSAwIFIgL01vZERhdGUgNjkgMCBSID4+CmVuZG9iagp4cmVmCjAgNzAK
+	MDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDQ2ODM1IDAwMDAwIG4gCjAwMDAwMzAyMzIg
+	MDAwMDAgbiAKMDAwMDAwNDAwMyAwMDAwMCBuIAowMDAwMDI1ODg4IDAwMDAwIG4gCjAw
+	MDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMzk4MyAwMDAwMCBuIAowMDAwMDA0MTA3IDAw
+	MDAwIG4gCjAwMDAwMjQ5ODcgMDAwMDAgbiAKMDAwMDAwNzExMCAwMDAwMCBuIAowMDAw
+	MDEwMzg3IDAwMDAwIG4gCjAwMDAwMTA0MDggMDAwMDAgbiAKMDAwMDAxMTI5NCAwMDAw
+	MCBuIAowMDAwMDA1NTUyIDAwMDAwIG4gCjAwMDAwMDcwODkgMDAwMDAgbiAKMDAwMDAw
+	NDQ2OSAwMDAwMCBuIAowMDAwMDI1ODUxIDAwMDAwIG4gCjAwMDAwNDY1NjEgMDAwMDAg
+	biAKMDAwMDAwNDkzNCAwMDAwMCBuIAowMDAwMDA0NjIwIDAwMDAwIG4gCjAwMDAwMDUz
+	OTUgMDAwMDAgbiAKMDAwMDAwNTA4NSAwMDAwMCBuIAowMDAwMDA1MjQyIDAwMDAwIG4g
+	CjAwMDAwMzc4NDAgMDAwMDAgbiAKMDAwMDAwNDc3NyAwMDAwMCBuIAowMDAwMDE3ODI2
+	IDAwMDAwIG4gCjAwMDAwMTc4NzMgMDAwMDAgbiAKMDAwMDAxNzkyMCAwMDAwMCBuIAow
+	MDAwMDE3OTY4IDAwMDAwIG4gCjAwMDAwMjk4MDkgMDAwMDAgbiAKMDAwMDAyOTE2NCAw
+	MDAwMCBuIAowMDAwMDI4NTQ1IDAwMDAwIG4gCjAwMDAwMjgxMjIgMDAwMDAgbiAKMDAw
+	MDAyNzQ3NyAwMDAwMCBuIAowMDAwMDI2NjcwIDAwMDAwIG4gCjAwMDAwMjYwNTEgMDAw
+	MDAgbiAKMDAwMDAyNDA5MCAwMDAwMCBuIAowMDAwMDE1NzcyIDAwMDAwIG4gCjAwMDAw
+	MTc4MDUgMDAwMDAgbiAKMDAwMDAxMjc3MCAwMDAwMCBuIAowMDAwMDE1NzUxIDAwMDAw
+	IG4gCjAwMDAwMTEzMTQgMDAwMDAgbiAKMDAwMDAxMjc0OSAwMDAwMCBuIAowMDAwMDE4
+	MDEzIDAwMDAwIG4gCjAwMDAwMjQwNjkgMDAwMDAgbiAKMDAwMDAyNDEyNyAwMDAwMCBu
+	IAowMDAwMDI0OTY3IDAwMDAwIG4gCjAwMDAwMjUwMjMgMDAwMDAgbiAKMDAwMDAyNTgz
+	MSAwMDAwMCBuIAowMDAwMDI1OTcxIDAwMDAwIG4gCjAwMDAwMjY2NTAgMDAwMDAgbiAK
+	MDAwMDAyNzQ1NyAwMDAwMCBuIAowMDAwMDI4MTAyIDAwMDAwIG4gCjAwMDAwMjg1MjUg
+	MDAwMDAgbiAKMDAwMDAyOTE0NCAwMDAwMCBuIAowMDAwMDI5Nzg5IDAwMDAwIG4gCjAw
+	MDAwMzAyMTIgMDAwMDAgbiAKMDAwMDAzMDM5NSAwMDAwMCBuIAowMDAwMDMwMjgwIDAw
+	MDAwIG4gCjAwMDAwMzAzNzMgMDAwMDAgbiAKMDAwMDAzMDQ4OCAwMDAwMCBuIAowMDAw
+	MDM3MzU0IDAwMDAwIG4gCjAwMDAwMzczNzUgMDAwMDAgbiAKMDAwMDAzNzYwMCAwMDAw
+	MCBuIAowMDAwMDM4MDE1IDAwMDAwIG4gCjAwMDAwNDU4NDcgMDAwMDAgbiAKMDAwMDA0
+	NTg2OCAwMDAwMCBuIAowMDAwMDQ2MDk5IDAwMDAwIG4gCjAwMDAwNDY3NDEgMDAwMDAg
+	biAKMDAwMDA0Njc5MyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDcwIC9Sb290IDQ5
+	IDAgUiAvSW5mbyAxIDAgUiAvSUQgWyA8MDMyMzk3ZTAwZDIyMzQyMWNhZjU0MmY1MTM0
+	N2VjMGY+CjwwMzIzOTdlMDBkMjIzNDIxY2FmNTQyZjUxMzQ3ZWMwZj4gXSA+PgpzdGFy
+	dHhyZWYKNDY5MTAKJSVFT0YKMSAwIG9iago8PC9BdXRob3IgKFJvYmVydCBMeSkvQ3Jl
+	YXRpb25EYXRlIChEOjIwMTEwOTA3MjEzMjAwWikvQ3JlYXRvciAoT21uaUdyYWZmbGUg
+	UHJvZmVzc2lvbmFsIDUuMy4yKS9Nb2REYXRlIChEOjIwMTExMTI5MTcxMzAwWikvUHJv
+	ZHVjZXIgNjggMCBSIC9UaXRsZSAocmVuZGVyc2NyaXB0X292ZXJ2aWV3KT4+CmVuZG9i
+	agp4cmVmCjEgMQowMDAwMDQ4NDY4IDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzwwMzIz
+	OTdlMDBkMjIzNDIxY2FmNTQyZjUxMzQ3ZWMwZj4gPDAzMjM5N2UwMGQyMjM0MjFjYWY1
+	NDJmNTEzNDdlYzBmPl0gL0luZm8gMSAwIFIgL1ByZXYgNDY5MTAgL1Jvb3QgNDkgMCBS
+	IC9TaXplIDcwPj4Kc3RhcnR4cmVmCjQ4NjU2CiUlRU9GCg==
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	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
+	AQ==
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array>
+			<dict>
+				<key>name</key>
+				<string>Canvas 1</string>
+			</dict>
+		</array>
+		<key>Frame</key>
+		<string>{{318, 108}, {971, 888}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>120</integer>
+		<key>VisibleRegion</key>
+		<string>{{-130, 0}, {836, 734}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
diff --git a/docs/html/images/rs_overview.png b/docs/html/images/rs_overview.png
new file mode 100644
index 0000000..888063dc
--- /dev/null
+++ b/docs/html/images/rs_overview.png
Binary files differ
diff --git a/docs/html/reference/renderscript/annotated.html b/docs/html/reference/renderscript/annotated.html
new file mode 100644
index 0000000..0425db2
--- /dev/null
+++ b/docs/html/reference/renderscript/annotated.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Data Structures</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"> </div><table>
+  <tr><td class="indexkey"><a class="el" href="structrs__allocation.html">rs_allocation</a></td><td class="indexvalue">Opaque handle to a Renderscript allocation </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__element.html">rs_element</a></td><td class="indexvalue">Opaque handle to a Renderscript element </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__font.html">rs_font</a></td><td class="indexvalue">Opaque handle to a Renderscript font object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a></td><td class="indexvalue">2x2 float matrix </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a></td><td class="indexvalue">3x3 float matrix </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a></td><td class="indexvalue">4x4 float matrix </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__mesh.html">rs_mesh</a></td><td class="indexvalue">Opaque handle to a Renderscript mesh object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramFragment object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__program__raster.html">rs_program_raster</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramRaster object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__program__store.html">rs_program_store</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramStore object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a></td><td class="indexvalue">Opaque handle to a Renderscript ProgramVertex object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__sampler.html">rs_sampler</a></td><td class="indexvalue">Opaque handle to a Renderscript sampler object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__script.html">rs_script</a></td><td class="indexvalue">Opaque handle to a Renderscript script object </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__script__call.html">rs_script_call</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__tm.html">rs_tm</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><a class="el" href="structrs__type.html">rs_type</a></td><td class="indexvalue">Opaque handle to a Renderscript type </td></tr>
+</table>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/doxygen.css b/docs/html/reference/renderscript/doxygen.css
new file mode 100644
index 0000000..22c7b5c
--- /dev/null
+++ b/docs/html/reference/renderscript/doxygen.css
@@ -0,0 +1,946 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+	font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+	font-size: 150%;
+}
+
+.title {
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h2 {
+	font-size: 120%;
+}
+
+h3 {
+	font-size: 100%;
+}
+
+dt {
+	font-weight: bold;
+}
+
+div.multicol {
+	-moz-column-gap: 1em;
+	-webkit-column-gap: 1em;
+	-moz-column-count: 3;
+	-webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+	margin-top: 2px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+}
+
+div.qindex, div.navpath {
+	width: 100%;
+	line-height: 140%;
+}
+
+div.navtab {
+	margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+	color: #3D578C;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: #4665A2;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a.qindex {
+	font-weight: bold;
+}
+
+a.qindexHL {
+	font-weight: bold;
+	background-color: #9CAFD4;
+	color: #ffffff;
+	border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+	color: #4665A2;
+}
+
+a.codeRef {
+	color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+.fragment {
+	font-family: monospace, fixed;
+	font-size: 105%;
+}
+
+pre.fragment {
+	border: 1px solid #C4CFE5;
+	background-color: #FBFCFD;
+	padding: 4px 6px;
+	margin: 4px 8px 4px 2px;
+	overflow: auto;
+	word-wrap: break-word;
+	font-size:  9pt;
+	line-height: 125%;
+}
+
+div.ah {
+	background-color: black;
+	font-weight: bold;
+	color: #ffffff;
+	margin-bottom: 3px;
+	margin-top: 3px;
+	padding: 0.2em;
+	border: solid thin #333;
+	border-radius: 0.5em;
+	-webkit-border-radius: .5em;
+	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
+	-webkit-box-shadow: 2px 2px 3px #999;
+	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	background-color: white;
+	color: black;
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 8px;
+	margin-right: 8px;
+}
+
+td.indexkey {
+	background-color: #EBEFF6;
+	font-weight: bold;
+	border: 1px solid #C4CFE5;
+	margin: 2px 0px 2px 0;
+	padding: 2px 10px;
+}
+
+td.indexvalue {
+	background-color: #EBEFF6;
+	border: 1px solid #C4CFE5;
+	padding: 2px 10px;
+	margin: 2px 0px;
+}
+
+tr.memlist {
+	background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.formulaDsp {
+	
+}
+
+img.formulaInl {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: #008000
+}
+
+span.keywordtype {
+	color: #604020
+}
+
+span.keywordflow {
+	color: #e08000
+}
+
+span.comment {
+	color: #800000
+}
+
+span.preprocessor {
+	color: #806020
+}
+
+span.stringliteral {
+	color: #002080
+}
+
+span.charliteral {
+	color: #008080
+}
+
+span.vhdldigit { 
+	color: #ff00ff 
+}
+
+span.vhdlchar { 
+	color: #000000 
+}
+
+span.vhdlkeyword { 
+	color: #700070 
+}
+
+span.vhdllogic { 
+	color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+	color: #003399;
+	font-weight: bold;
+}
+
+form.search {
+	margin-bottom: 0px;
+	margin-top: 0px;
+}
+
+input.search {
+	font-size: 75%;
+	color: #000080;
+	font-weight: normal;
+	background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+	background: #EBEFF6;
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: #F9FAFC;
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+	border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+	font-size: 80%;
+	color: #4665A2;
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.memnav {
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+	margin: 2px;
+	margin-right: 15px;
+	padding: 2px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 8px;
+        border-top-left-radius: 8px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* opera specific markup */
+        border-bottom-left-radius: 8px;
+        border-bottom-right-radius: 8px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+}
+
+.paramname {
+	color: #602020;
+	white-space: nowrap;
+}
+.paramname em {
+	font-style: normal;
+}
+
+.params, .retval, .exception, .tparams {
+        border-spacing: 6px 2px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+
+
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+	font-family: sans-serif;
+	margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+	font-size: 9pt;
+	font-weight: bold;
+	margin: 5px;
+}
+
+.directory h3 {
+	margin: 0px;
+	margin-top: 1em;
+	font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+	height: 61px;
+	background-repeat: no-repeat;
+	background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+	display: none;
+}
+*/
+
+.directory > h3 {
+	margin-top: 0;
+}
+
+.directory p {
+	margin: 0px;
+	white-space: nowrap;
+}
+
+.directory div {
+	display: none;
+	margin: 0px;
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+	font-size: 100%;
+	font-weight: bold;
+}
+
+.directory-alt h3 {
+	margin: 0px;
+	margin-top: 1em;
+	font-size: 11pt;
+}
+
+.directory-alt > h3 {
+	margin-top: 0;
+}
+
+.directory-alt p {
+	margin: 0px;
+	white-space: nowrap;
+}
+
+.directory-alt div {
+	display: none;
+	margin: 0px;
+}
+
+.directory-alt img {
+	vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+	font-style: normal;
+	color: #2A3D61;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+	text-align:left;
+}
+
+table.fieldtable {
+        width: 100%;
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        width: 100%;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: url('tab_b.png');
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image:url('tab_b.png');
+	background-repeat:repeat-x;
+	height:30px;
+	line-height:30px;
+	color:#8AA0CC;
+	border:solid 1px #C2CDE4;
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:url('bc_s.png');
+	background-repeat:no-repeat;
+	background-position:right;
+	color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	text-decoration: none;
+	outline: none;
+}
+
+.navpath li.navelem a:hover
+{
+	color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}       
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+div.ingroups
+{
+	margin-left: 5px;
+	font-size: 8pt;
+	padding-left: 5px;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+	background-color: #F9FAFC;
+	margin:  0px;
+	border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 7px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
+{
+        border-left:4px solid;
+        padding: 0 0 0 6px;
+}
+
+dl.note
+{
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        border-color: #505050;
+}
+
+dl.todo
+{
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        border-color: #C08050;
+}
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectname
+{
+	font: 300% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 120% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+  pre.fragment
+  {
+    overflow: visible;
+    text-wrap: unrestricted;
+    white-space: -moz-pre-wrap; /* Moz */
+    white-space: -pre-wrap; /* Opera 4-6 */
+    white-space: -o-pre-wrap; /* Opera 7 */
+    white-space: pre-wrap; /* CSS3  */
+    word-wrap: break-word; /* IE 5.5+ */
+  }
+}
+
diff --git a/docs/html/reference/renderscript/globals.html b/docs/html/reference/renderscript/globals.html
new file mode 100644
index 0000000..f6fa413
--- /dev/null
+++ b/docs/html/reference/renderscript/globals.html
@@ -0,0 +1,720 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_e"><span>e</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<div class="textblock"> </div>
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>acos()
+: <a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">rs_cl.rsh</a>
+</li>
+<li>acosh()
+: <a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">rs_cl.rsh</a>
+</li>
+<li>acospi()
+: <a class="el" href="rs__cl_8rsh.html#a2c0c7c00815bd480fcda80d1144ac20d">rs_cl.rsh</a>
+</li>
+<li>asin()
+: <a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">rs_cl.rsh</a>
+</li>
+<li>asinh()
+: <a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">rs_cl.rsh</a>
+</li>
+<li>asinpi()
+: <a class="el" href="rs__cl_8rsh.html#a679b63e86358fc962cb343eb6263496b">rs_cl.rsh</a>
+</li>
+<li>atan()
+: <a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">rs_cl.rsh</a>
+</li>
+<li>atan2()
+: <a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">rs_cl.rsh</a>
+</li>
+<li>atan2pi()
+: <a class="el" href="rs__cl_8rsh.html#a9aed0a1613c86acf5e4c5ad3290a4745">rs_cl.rsh</a>
+</li>
+<li>atanh()
+: <a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">rs_cl.rsh</a>
+</li>
+<li>atanpi()
+: <a class="el" href="rs__cl_8rsh.html#a420d4aaea0e53d7172845a21a1e648ea">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>cbrt()
+: <a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">rs_cl.rsh</a>
+</li>
+<li>ceil()
+: <a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">rs_cl.rsh</a>
+</li>
+<li>char2
+: <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">rs_types.rsh</a>
+</li>
+<li>char3
+: <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">rs_types.rsh</a>
+</li>
+<li>char4
+: <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">rs_types.rsh</a>
+</li>
+<li>clamp()
+: <a class="el" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">rs_cl.rsh</a>
+</li>
+<li>copysign()
+: <a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">rs_cl.rsh</a>
+</li>
+<li>cos()
+: <a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">rs_cl.rsh</a>
+</li>
+<li>cosh()
+: <a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">rs_cl.rsh</a>
+</li>
+<li>cospi()
+: <a class="el" href="rs__cl_8rsh.html#a07b12188bd53c6b584274892f6abf425">rs_cl.rsh</a>
+</li>
+<li>cross()
+: <a class="el" href="rs__cl_8rsh.html#a0f7beb26bb4aa30535babd14492a7e90">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>degrees()
+: <a class="el" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">rs_cl.rsh</a>
+</li>
+<li>distance()
+: <a class="el" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">rs_cl.rsh</a>
+</li>
+<li>dot()
+: <a class="el" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">rs_cl.rsh</a>
+</li>
+<li>double2
+: <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">rs_types.rsh</a>
+</li>
+<li>double3
+: <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">rs_types.rsh</a>
+</li>
+<li>double4
+: <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>erf()
+: <a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">rs_cl.rsh</a>
+</li>
+<li>erfc()
+: <a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">rs_cl.rsh</a>
+</li>
+<li>exp()
+: <a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">rs_cl.rsh</a>
+</li>
+<li>exp10()
+: <a class="el" href="rs__cl_8rsh.html#a4b51589157c9ce600ea6156be51d8d18">rs_cl.rsh</a>
+</li>
+<li>exp2()
+: <a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">rs_cl.rsh</a>
+</li>
+<li>expm1()
+: <a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>fabs()
+: <a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">rs_cl.rsh</a>
+</li>
+<li>fdim()
+: <a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">rs_cl.rsh</a>
+</li>
+<li>float2
+: <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">rs_types.rsh</a>
+</li>
+<li>float3
+: <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">rs_types.rsh</a>
+</li>
+<li>float4
+: <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">rs_types.rsh</a>
+</li>
+<li>floor()
+: <a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">rs_cl.rsh</a>
+</li>
+<li>fma()
+: <a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">rs_cl.rsh</a>
+</li>
+<li>fmax()
+: <a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">rs_cl.rsh</a>
+</li>
+<li>fmin()
+: <a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">rs_cl.rsh</a>
+</li>
+<li>fmod()
+: <a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">rs_cl.rsh</a>
+</li>
+<li>fract()
+: <a class="el" href="rs__cl_8rsh.html#ac5277212e0df309a0a7c908424f7b14b">rs_cl.rsh</a>
+</li>
+<li>frexp()
+: <a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hypot()
+: <a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>ilogb()
+: <a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">rs_cl.rsh</a>
+</li>
+<li>int16_t
+: <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">rs_types.rsh</a>
+</li>
+<li>int2
+: <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">rs_types.rsh</a>
+</li>
+<li>int3
+: <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">rs_types.rsh</a>
+</li>
+<li>int32_t
+: <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">rs_types.rsh</a>
+</li>
+<li>int4
+: <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">rs_types.rsh</a>
+</li>
+<li>int64_t
+: <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">rs_types.rsh</a>
+</li>
+<li>int8_t
+: <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<li>ldexp()
+: <a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">rs_cl.rsh</a>
+</li>
+<li>length()
+: <a class="el" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">rs_cl.rsh</a>
+</li>
+<li>lgamma()
+: <a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">rs_cl.rsh</a>
+</li>
+<li>log()
+: <a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">rs_cl.rsh</a>
+</li>
+<li>log10()
+: <a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">rs_cl.rsh</a>
+</li>
+<li>log1p()
+: <a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">rs_cl.rsh</a>
+</li>
+<li>log2()
+: <a class="el" href="rs__cl_8rsh.html#a2fb571ae932f671ff3e9e97f2d3fabb7">rs_cl.rsh</a>
+</li>
+<li>logb()
+: <a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">rs_cl.rsh</a>
+</li>
+<li>long2
+: <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">rs_types.rsh</a>
+</li>
+<li>long3
+: <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">rs_types.rsh</a>
+</li>
+<li>long4
+: <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>mad()
+: <a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">rs_cl.rsh</a>
+</li>
+<li>mix()
+: <a class="el" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">rs_cl.rsh</a>
+</li>
+<li>modf()
+: <a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>nextafter()
+: <a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">rs_cl.rsh</a>
+</li>
+<li>normalize()
+: <a class="el" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>pow()
+: <a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">rs_cl.rsh</a>
+</li>
+<li>pown()
+: <a class="el" href="rs__cl_8rsh.html#afd46205452017b741abb2e17fc28557d">rs_cl.rsh</a>
+</li>
+<li>powr()
+: <a class="el" href="rs__cl_8rsh.html#a3ff65421721ec8e6ce8d875a563d005f">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>radians()
+: <a class="el" href="rs__cl_8rsh.html#aaef2526c4d190ba6f7301b4e810917a7">rs_cl.rsh</a>
+</li>
+<li>remainder()
+: <a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">rs_cl.rsh</a>
+</li>
+<li>rint()
+: <a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rs_cl.rsh</a>
+</li>
+<li>rootn()
+: <a class="el" href="rs__cl_8rsh.html#af169e7e1c575b7c24c1834569223077f">rs_cl.rsh</a>
+</li>
+<li>round()
+: <a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">rs_cl.rsh</a>
+</li>
+<li>rs_for_each_strategy
+: <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_core.rsh</a>
+</li>
+<li>rs_quaternion
+: <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_types.rsh</a>
+</li>
+<li>rs_script_call_t
+: <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_core.rsh</a>
+</li>
+<li>rs_time_t
+: <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time.rsh</a>
+</li>
+<li>rsAllocationGetDimFaces()
+: <a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimLOD()
+: <a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimX()
+: <a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimY()
+: <a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimZ()
+: <a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rs_allocation.rsh</a>
+</li>
+<li>rsClamp()
+: <a class="el" href="rs__math_8rsh.html#ad36abebbb36ffc5312fb2ed8baf98d39">rs_math.rsh</a>
+</li>
+<li>rsClearObject()
+: <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
+</li>
+<li>rsDebug()
+: <a class="el" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rs_debug.rsh</a>
+</li>
+<li>rsExtractFrustumPlanes()
+: <a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rs_math.rsh</a>
+</li>
+<li>rsForEach()
+: <a class="el" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rs_core.rsh</a>
+</li>
+<li>rsFrac()
+: <a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rs_math.rsh</a>
+</li>
+<li>rsgAllocationSyncAll()
+: <a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rs_graphics.rsh</a>
+</li>
+<li>rsgBindFont()
+: <a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramFragment()
+: <a class="el" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramRaster()
+: <a class="el" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramStore()
+: <a class="el" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramVertex()
+: <a class="el" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rs_graphics.rsh</a>
+</li>
+<li>rsgBindSampler()
+: <a class="el" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rs_graphics.rsh</a>
+</li>
+<li>rsgBindTexture()
+: <a class="el" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rs_graphics.rsh</a>
+</li>
+<li>rsgClearColor()
+: <a class="el" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rs_graphics.rsh</a>
+</li>
+<li>rsgClearDepth()
+: <a class="el" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawMesh()
+: <a class="el" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawQuad()
+: <a class="el" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawQuadTexCoords()
+: <a class="el" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawRect()
+: <a class="el" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawSpriteScreenspace()
+: <a class="el" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawText()
+: <a class="el" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rs_graphics.rsh</a>
+</li>
+<li>rsGetAllocation()
+: <a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rs_allocation.rsh</a>
+</li>
+<li>rsGetDt()
+: <a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rs_time.rsh</a>
+</li>
+<li>rsGetElementAt()
+: <a class="el" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rs_allocation.rsh</a>
+</li>
+<li>rsgFontColor()
+: <a class="el" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rs_graphics.rsh</a>
+</li>
+<li>rsgGetHeight()
+: <a class="el" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rs_graphics.rsh</a>
+</li>
+<li>rsgGetWidth()
+: <a class="el" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rs_graphics.rsh</a>
+</li>
+<li>rsgMeasureText()
+: <a class="el" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rs_graphics.rsh</a>
+</li>
+<li>rsgMeshComputeBoundingBox()
+: <a class="el" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramFragmentConstantColor()
+: <a class="el" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexGetProjectionMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadModelMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadProjectionMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadTextureMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rs_graphics.rsh</a>
+</li>
+<li>rsIsObject()
+: <a class="el" href="rs__object_8rsh.html#ac1d6da920f12974b3633d25ed078da2d">rs_object.rsh</a>
+</li>
+<li>rsIsSphereInFrustum()
+: <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
+</li>
+<li>rsLocaltime()
+: <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
+</li>
+<li>rsMatrixGet()
+: <a class="el" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixInverse()
+: <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixInverseTranspose()
+: <a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoad()
+: <a class="el" href="rs__matrix_8rsh.html#a06176acb38405937cb94c835a712a3b3">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadFrustum()
+: <a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadIdentity()
+: <a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadMultiply()
+: <a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadOrtho()
+: <a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadPerspective()
+: <a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadRotate()
+: <a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadScale()
+: <a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadTranslate()
+: <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixMultiply()
+: <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixRotate()
+: <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixScale()
+: <a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixSet()
+: <a class="el" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixTranslate()
+: <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixTranspose()
+: <a class="el" href="rs__matrix_8rsh.html#ac52acb31a705f6c68af8bddea0e79969">rs_matrix.rsh</a>
+</li>
+<li>rsPackColorTo8888()
+: <a class="el" href="rs__math_8rsh.html#a22e0be7e18b317a7453ebad4300934f6">rs_math.rsh</a>
+</li>
+<li>rsqrt()
+: <a class="el" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rs_cl.rsh</a>
+</li>
+<li>rsQuaternionAdd()
+: <a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionConjugate()
+: <a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionDot()
+: <a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionGetMatrixUnit()
+: <a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionLoadRotate()
+: <a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionLoadRotateUnit()
+: <a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionMultiply()
+: <a class="el" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionNormalize()
+: <a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionSet()
+: <a class="el" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionSlerp()
+: <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
+</li>
+<li>rsRand()
+: <a class="el" href="rs__math_8rsh.html#a03e898d810ac44158e7461b2b2b1c356">rs_math.rsh</a>
+</li>
+<li>rsSendToClient()
+: <a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rs_core.rsh</a>
+</li>
+<li>rsSendToClientBlocking()
+: <a class="el" href="rs__core_8rsh.html#afc93b00be08f58512a6ab6a87feb9515">rs_core.rsh</a>
+</li>
+<li>rsSetObject()
+: <a class="el" href="rs__object_8rsh.html#a5132f90b4aaf8d2e35e6ad021fb08175">rs_object.rsh</a>
+</li>
+<li>rsTime()
+: <a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rs_time.rsh</a>
+</li>
+<li>rsUnpackColor8888()
+: <a class="el" href="rs__math_8rsh.html#a26525a4f5093bd0f13191efe06127f4b">rs_math.rsh</a>
+</li>
+<li>rsUptimeMillis()
+: <a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rs_time.rsh</a>
+</li>
+<li>rsUptimeNanos()
+: <a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rs_time.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>short2
+: <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">rs_types.rsh</a>
+</li>
+<li>short3
+: <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">rs_types.rsh</a>
+</li>
+<li>short4
+: <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">rs_types.rsh</a>
+</li>
+<li>sign()
+: <a class="el" href="rs__cl_8rsh.html#a3e6d477a06dec7070f073eec9d8f420c">rs_cl.rsh</a>
+</li>
+<li>sin()
+: <a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">rs_cl.rsh</a>
+</li>
+<li>sincos()
+: <a class="el" href="rs__cl_8rsh.html#a240f7c7c20b432a30dc660b5dd4cd320">rs_cl.rsh</a>
+</li>
+<li>sinh()
+: <a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">rs_cl.rsh</a>
+</li>
+<li>sinpi()
+: <a class="el" href="rs__cl_8rsh.html#a4fe4fef049786e888526d6f37b912b0a">rs_cl.rsh</a>
+</li>
+<li>size_t
+: <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">rs_types.rsh</a>
+</li>
+<li>sqrt()
+: <a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">rs_cl.rsh</a>
+</li>
+<li>ssize_t
+: <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">rs_types.rsh</a>
+</li>
+<li>step()
+: <a class="el" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>tan()
+: <a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">rs_cl.rsh</a>
+</li>
+<li>tanh()
+: <a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">rs_cl.rsh</a>
+</li>
+<li>tanpi()
+: <a class="el" href="rs__cl_8rsh.html#ad8bfb083dd3979a305e594a0d6e581c4">rs_cl.rsh</a>
+</li>
+<li>tgamma()
+: <a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">rs_cl.rsh</a>
+</li>
+<li>trunc()
+: <a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>uchar
+: <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">rs_types.rsh</a>
+</li>
+<li>uchar2
+: <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">rs_types.rsh</a>
+</li>
+<li>uchar3
+: <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">rs_types.rsh</a>
+</li>
+<li>uchar4
+: <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">rs_types.rsh</a>
+</li>
+<li>uint
+: <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">rs_types.rsh</a>
+</li>
+<li>uint16_t
+: <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">rs_types.rsh</a>
+</li>
+<li>uint2
+: <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">rs_types.rsh</a>
+</li>
+<li>uint3
+: <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">rs_types.rsh</a>
+</li>
+<li>uint32_t
+: <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">rs_types.rsh</a>
+</li>
+<li>uint4
+: <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">rs_types.rsh</a>
+</li>
+<li>uint64_t
+: <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">rs_types.rsh</a>
+</li>
+<li>uint8_t
+: <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">rs_types.rsh</a>
+</li>
+<li>ulong
+: <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">rs_types.rsh</a>
+</li>
+<li>ulong2
+: <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">rs_types.rsh</a>
+</li>
+<li>ulong3
+: <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">rs_types.rsh</a>
+</li>
+<li>ulong4
+: <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">rs_types.rsh</a>
+</li>
+<li>ushort
+: <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">rs_types.rsh</a>
+</li>
+<li>ushort2
+: <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">rs_types.rsh</a>
+</li>
+<li>ushort3
+: <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">rs_types.rsh</a>
+</li>
+<li>ushort4
+: <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">rs_types.rsh</a>
+</li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/globals_enum.html b/docs/html/reference/renderscript/globals_enum.html
new file mode 100644
index 0000000..7301432
--- /dev/null
+++ b/docs/html/reference/renderscript/globals_enum.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&#160;<ul>
+<li>rs_for_each_strategy
+: <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_core.rsh</a>
+</li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/globals_func.html b/docs/html/reference/renderscript/globals_func.html
new file mode 100644
index 0000000..5886454
--- /dev/null
+++ b/docs/html/reference/renderscript/globals_func.html
@@ -0,0 +1,571 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_e"><span>e</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_m"><span>m</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>acos()
+: <a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">rs_cl.rsh</a>
+</li>
+<li>acosh()
+: <a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">rs_cl.rsh</a>
+</li>
+<li>acospi()
+: <a class="el" href="rs__cl_8rsh.html#a2c0c7c00815bd480fcda80d1144ac20d">rs_cl.rsh</a>
+</li>
+<li>asin()
+: <a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">rs_cl.rsh</a>
+</li>
+<li>asinh()
+: <a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">rs_cl.rsh</a>
+</li>
+<li>asinpi()
+: <a class="el" href="rs__cl_8rsh.html#a679b63e86358fc962cb343eb6263496b">rs_cl.rsh</a>
+</li>
+<li>atan()
+: <a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">rs_cl.rsh</a>
+</li>
+<li>atan2()
+: <a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">rs_cl.rsh</a>
+</li>
+<li>atan2pi()
+: <a class="el" href="rs__cl_8rsh.html#a9aed0a1613c86acf5e4c5ad3290a4745">rs_cl.rsh</a>
+</li>
+<li>atanh()
+: <a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">rs_cl.rsh</a>
+</li>
+<li>atanpi()
+: <a class="el" href="rs__cl_8rsh.html#a420d4aaea0e53d7172845a21a1e648ea">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>cbrt()
+: <a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">rs_cl.rsh</a>
+</li>
+<li>ceil()
+: <a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">rs_cl.rsh</a>
+</li>
+<li>clamp()
+: <a class="el" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">rs_cl.rsh</a>
+</li>
+<li>copysign()
+: <a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">rs_cl.rsh</a>
+</li>
+<li>cos()
+: <a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">rs_cl.rsh</a>
+</li>
+<li>cosh()
+: <a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">rs_cl.rsh</a>
+</li>
+<li>cospi()
+: <a class="el" href="rs__cl_8rsh.html#a07b12188bd53c6b584274892f6abf425">rs_cl.rsh</a>
+</li>
+<li>cross()
+: <a class="el" href="rs__cl_8rsh.html#a0f7beb26bb4aa30535babd14492a7e90">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>degrees()
+: <a class="el" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">rs_cl.rsh</a>
+</li>
+<li>distance()
+: <a class="el" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">rs_cl.rsh</a>
+</li>
+<li>dot()
+: <a class="el" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>erf()
+: <a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">rs_cl.rsh</a>
+</li>
+<li>erfc()
+: <a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">rs_cl.rsh</a>
+</li>
+<li>exp()
+: <a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">rs_cl.rsh</a>
+</li>
+<li>exp10()
+: <a class="el" href="rs__cl_8rsh.html#a4b51589157c9ce600ea6156be51d8d18">rs_cl.rsh</a>
+</li>
+<li>exp2()
+: <a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">rs_cl.rsh</a>
+</li>
+<li>expm1()
+: <a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>fabs()
+: <a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">rs_cl.rsh</a>
+</li>
+<li>fdim()
+: <a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">rs_cl.rsh</a>
+</li>
+<li>floor()
+: <a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">rs_cl.rsh</a>
+</li>
+<li>fma()
+: <a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">rs_cl.rsh</a>
+</li>
+<li>fmax()
+: <a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">rs_cl.rsh</a>
+</li>
+<li>fmin()
+: <a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">rs_cl.rsh</a>
+</li>
+<li>fmod()
+: <a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">rs_cl.rsh</a>
+</li>
+<li>fract()
+: <a class="el" href="rs__cl_8rsh.html#ac5277212e0df309a0a7c908424f7b14b">rs_cl.rsh</a>
+</li>
+<li>frexp()
+: <a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hypot()
+: <a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>ilogb()
+: <a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<li>ldexp()
+: <a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">rs_cl.rsh</a>
+</li>
+<li>length()
+: <a class="el" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">rs_cl.rsh</a>
+</li>
+<li>lgamma()
+: <a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">rs_cl.rsh</a>
+</li>
+<li>log()
+: <a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">rs_cl.rsh</a>
+</li>
+<li>log10()
+: <a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">rs_cl.rsh</a>
+</li>
+<li>log1p()
+: <a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">rs_cl.rsh</a>
+</li>
+<li>log2()
+: <a class="el" href="rs__cl_8rsh.html#a2fb571ae932f671ff3e9e97f2d3fabb7">rs_cl.rsh</a>
+</li>
+<li>logb()
+: <a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>mad()
+: <a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">rs_cl.rsh</a>
+</li>
+<li>mix()
+: <a class="el" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">rs_cl.rsh</a>
+</li>
+<li>modf()
+: <a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>nextafter()
+: <a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">rs_cl.rsh</a>
+</li>
+<li>normalize()
+: <a class="el" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>pow()
+: <a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">rs_cl.rsh</a>
+</li>
+<li>pown()
+: <a class="el" href="rs__cl_8rsh.html#afd46205452017b741abb2e17fc28557d">rs_cl.rsh</a>
+</li>
+<li>powr()
+: <a class="el" href="rs__cl_8rsh.html#a3ff65421721ec8e6ce8d875a563d005f">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>radians()
+: <a class="el" href="rs__cl_8rsh.html#aaef2526c4d190ba6f7301b4e810917a7">rs_cl.rsh</a>
+</li>
+<li>remainder()
+: <a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">rs_cl.rsh</a>
+</li>
+<li>rint()
+: <a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rs_cl.rsh</a>
+</li>
+<li>rootn()
+: <a class="el" href="rs__cl_8rsh.html#af169e7e1c575b7c24c1834569223077f">rs_cl.rsh</a>
+</li>
+<li>round()
+: <a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">rs_cl.rsh</a>
+</li>
+<li>rsAllocationGetDimFaces()
+: <a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimLOD()
+: <a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimX()
+: <a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimY()
+: <a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rs_allocation.rsh</a>
+</li>
+<li>rsAllocationGetDimZ()
+: <a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rs_allocation.rsh</a>
+</li>
+<li>rsClamp()
+: <a class="el" href="rs__math_8rsh.html#ae31137028793c4aaf4df839535135837">rs_math.rsh</a>
+</li>
+<li>rsClearObject()
+: <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
+</li>
+<li>rsDebug()
+: <a class="el" href="rs__debug_8rsh.html#a0a59285be7204bde7b199c77578b6a42">rs_debug.rsh</a>
+</li>
+<li>rsExtractFrustumPlanes()
+: <a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rs_math.rsh</a>
+</li>
+<li>rsForEach()
+: <a class="el" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rs_core.rsh</a>
+</li>
+<li>rsFrac()
+: <a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rs_math.rsh</a>
+</li>
+<li>rsgAllocationSyncAll()
+: <a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rs_graphics.rsh</a>
+</li>
+<li>rsgBindFont()
+: <a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramFragment()
+: <a class="el" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramRaster()
+: <a class="el" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramStore()
+: <a class="el" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rs_graphics.rsh</a>
+</li>
+<li>rsgBindProgramVertex()
+: <a class="el" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rs_graphics.rsh</a>
+</li>
+<li>rsgBindSampler()
+: <a class="el" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rs_graphics.rsh</a>
+</li>
+<li>rsgBindTexture()
+: <a class="el" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rs_graphics.rsh</a>
+</li>
+<li>rsgClearColor()
+: <a class="el" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rs_graphics.rsh</a>
+</li>
+<li>rsgClearDepth()
+: <a class="el" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawMesh()
+: <a class="el" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawQuad()
+: <a class="el" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawQuadTexCoords()
+: <a class="el" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawRect()
+: <a class="el" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawSpriteScreenspace()
+: <a class="el" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rs_graphics.rsh</a>
+</li>
+<li>rsgDrawText()
+: <a class="el" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rs_graphics.rsh</a>
+</li>
+<li>rsGetAllocation()
+: <a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rs_allocation.rsh</a>
+</li>
+<li>rsGetDt()
+: <a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rs_time.rsh</a>
+</li>
+<li>rsGetElementAt()
+: <a class="el" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rs_allocation.rsh</a>
+</li>
+<li>rsgFontColor()
+: <a class="el" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rs_graphics.rsh</a>
+</li>
+<li>rsgGetHeight()
+: <a class="el" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rs_graphics.rsh</a>
+</li>
+<li>rsgGetWidth()
+: <a class="el" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rs_graphics.rsh</a>
+</li>
+<li>rsgMeasureText()
+: <a class="el" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rs_graphics.rsh</a>
+</li>
+<li>rsgMeshComputeBoundingBox()
+: <a class="el" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramFragmentConstantColor()
+: <a class="el" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexGetProjectionMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadModelMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadProjectionMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rs_graphics.rsh</a>
+</li>
+<li>rsgProgramVertexLoadTextureMatrix()
+: <a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rs_graphics.rsh</a>
+</li>
+<li>rsIsObject()
+: <a class="el" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rs_object.rsh</a>
+</li>
+<li>rsIsSphereInFrustum()
+: <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
+</li>
+<li>rsLocaltime()
+: <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
+</li>
+<li>rsMatrixGet()
+: <a class="el" href="rs__matrix_8rsh.html#a90b0548da8dbe1f643bcbac8466e5b72">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixInverse()
+: <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixInverseTranspose()
+: <a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoad()
+: <a class="el" href="rs__matrix_8rsh.html#a06176acb38405937cb94c835a712a3b3">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadFrustum()
+: <a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadIdentity()
+: <a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadMultiply()
+: <a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadOrtho()
+: <a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadPerspective()
+: <a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadRotate()
+: <a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadScale()
+: <a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixLoadTranslate()
+: <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixMultiply()
+: <a class="el" href="rs__matrix_8rsh.html#a716bc2d29b80eb25388aba3ba8845aef">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixRotate()
+: <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixScale()
+: <a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixSet()
+: <a class="el" href="rs__matrix_8rsh.html#ada106cb8f08e4b23930d7ba1a0ce5609">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixTranslate()
+: <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
+</li>
+<li>rsMatrixTranspose()
+: <a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rs_matrix.rsh</a>
+</li>
+<li>rsPackColorTo8888()
+: <a class="el" href="rs__math_8rsh.html#a22e0be7e18b317a7453ebad4300934f6">rs_math.rsh</a>
+</li>
+<li>rsqrt()
+: <a class="el" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rs_cl.rsh</a>
+</li>
+<li>rsQuaternionAdd()
+: <a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionConjugate()
+: <a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionDot()
+: <a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionGetMatrixUnit()
+: <a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionLoadRotate()
+: <a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionLoadRotateUnit()
+: <a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionMultiply()
+: <a class="el" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionNormalize()
+: <a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionSet()
+: <a class="el" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">rs_quaternion.rsh</a>
+</li>
+<li>rsQuaternionSlerp()
+: <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
+</li>
+<li>rsRand()
+: <a class="el" href="rs__math_8rsh.html#a84b2e7468314873b3aa02969e310d9e4">rs_math.rsh</a>
+</li>
+<li>rsSendToClient()
+: <a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rs_core.rsh</a>
+</li>
+<li>rsSendToClientBlocking()
+: <a class="el" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rs_core.rsh</a>
+</li>
+<li>rsSetObject()
+: <a class="el" href="rs__object_8rsh.html#a8135bceeb7b3ec8bf9a49d04e39bd565">rs_object.rsh</a>
+</li>
+<li>rsTime()
+: <a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rs_time.rsh</a>
+</li>
+<li>rsUnpackColor8888()
+: <a class="el" href="rs__math_8rsh.html#a26525a4f5093bd0f13191efe06127f4b">rs_math.rsh</a>
+</li>
+<li>rsUptimeMillis()
+: <a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rs_time.rsh</a>
+</li>
+<li>rsUptimeNanos()
+: <a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rs_time.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>sign()
+: <a class="el" href="rs__cl_8rsh.html#a3e6d477a06dec7070f073eec9d8f420c">rs_cl.rsh</a>
+</li>
+<li>sin()
+: <a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">rs_cl.rsh</a>
+</li>
+<li>sincos()
+: <a class="el" href="rs__cl_8rsh.html#a240f7c7c20b432a30dc660b5dd4cd320">rs_cl.rsh</a>
+</li>
+<li>sinh()
+: <a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">rs_cl.rsh</a>
+</li>
+<li>sinpi()
+: <a class="el" href="rs__cl_8rsh.html#a4fe4fef049786e888526d6f37b912b0a">rs_cl.rsh</a>
+</li>
+<li>sqrt()
+: <a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">rs_cl.rsh</a>
+</li>
+<li>step()
+: <a class="el" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">rs_cl.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>tan()
+: <a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">rs_cl.rsh</a>
+</li>
+<li>tanh()
+: <a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">rs_cl.rsh</a>
+</li>
+<li>tanpi()
+: <a class="el" href="rs__cl_8rsh.html#ad8bfb083dd3979a305e594a0d6e581c4">rs_cl.rsh</a>
+</li>
+<li>tgamma()
+: <a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">rs_cl.rsh</a>
+</li>
+<li>trunc()
+: <a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">rs_cl.rsh</a>
+</li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/globals_type.html b/docs/html/reference/renderscript/globals_type.html
new file mode 100644
index 0000000..238a6c4
--- /dev/null
+++ b/docs/html/reference/renderscript/globals_type.html
@@ -0,0 +1,223 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_r"><span>r</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>char2
+: <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">rs_types.rsh</a>
+</li>
+<li>char3
+: <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">rs_types.rsh</a>
+</li>
+<li>char4
+: <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>double2
+: <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">rs_types.rsh</a>
+</li>
+<li>double3
+: <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">rs_types.rsh</a>
+</li>
+<li>double4
+: <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>float2
+: <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">rs_types.rsh</a>
+</li>
+<li>float3
+: <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">rs_types.rsh</a>
+</li>
+<li>float4
+: <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>int16_t
+: <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">rs_types.rsh</a>
+</li>
+<li>int2
+: <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">rs_types.rsh</a>
+</li>
+<li>int3
+: <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">rs_types.rsh</a>
+</li>
+<li>int32_t
+: <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">rs_types.rsh</a>
+</li>
+<li>int4
+: <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">rs_types.rsh</a>
+</li>
+<li>int64_t
+: <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">rs_types.rsh</a>
+</li>
+<li>int8_t
+: <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<li>long2
+: <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">rs_types.rsh</a>
+</li>
+<li>long3
+: <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">rs_types.rsh</a>
+</li>
+<li>long4
+: <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>rs_quaternion
+: <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_types.rsh</a>
+</li>
+<li>rs_script_call_t
+: <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_core.rsh</a>
+</li>
+<li>rs_time_t
+: <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>short2
+: <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">rs_types.rsh</a>
+</li>
+<li>short3
+: <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">rs_types.rsh</a>
+</li>
+<li>short4
+: <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">rs_types.rsh</a>
+</li>
+<li>size_t
+: <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">rs_types.rsh</a>
+</li>
+<li>ssize_t
+: <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">rs_types.rsh</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>uchar
+: <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">rs_types.rsh</a>
+</li>
+<li>uchar2
+: <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">rs_types.rsh</a>
+</li>
+<li>uchar3
+: <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">rs_types.rsh</a>
+</li>
+<li>uchar4
+: <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">rs_types.rsh</a>
+</li>
+<li>uint
+: <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">rs_types.rsh</a>
+</li>
+<li>uint16_t
+: <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">rs_types.rsh</a>
+</li>
+<li>uint2
+: <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">rs_types.rsh</a>
+</li>
+<li>uint3
+: <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">rs_types.rsh</a>
+</li>
+<li>uint32_t
+: <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">rs_types.rsh</a>
+</li>
+<li>uint4
+: <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">rs_types.rsh</a>
+</li>
+<li>uint64_t
+: <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">rs_types.rsh</a>
+</li>
+<li>uint8_t
+: <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">rs_types.rsh</a>
+</li>
+<li>ulong
+: <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">rs_types.rsh</a>
+</li>
+<li>ulong2
+: <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">rs_types.rsh</a>
+</li>
+<li>ulong3
+: <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">rs_types.rsh</a>
+</li>
+<li>ulong4
+: <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">rs_types.rsh</a>
+</li>
+<li>ushort
+: <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">rs_types.rsh</a>
+</li>
+<li>ushort2
+: <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">rs_types.rsh</a>
+</li>
+<li>ushort3
+: <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">rs_types.rsh</a>
+</li>
+<li>ushort4
+: <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">rs_types.rsh</a>
+</li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/index.html b/docs/html/reference/renderscript/index.html
new file mode 100644
index 0000000..c4c057e
--- /dev/null
+++ b/docs/html/reference/renderscript/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li class="current"><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<div class="textblock"><p>Renderscript is a high-performance runtime that provides graphics rendering and compute operations at the native level. Renderscript code is compiled on devices at runtime to allow platform-independence as well. This reference documentation describes the Renderscript runtime APIs, which you can utilize to write Renderscript code in C99. The Renderscript header files are automatically included for you, except for the <a class="el" href="rs__graphics_8rsh.html" title="Renderscript graphics API.">rs_graphics.rsh</a> header. If you are doing graphics rendering, include the graphics header file like this:</p>
+<p><code>#include "rs_graphics.rsh"</code></p>
+<p>To use Renderscript, you need to utilize the Renderscript runtime APIs documented here as well as the Android framework APIs for Renderscript. For documentation on the Android framework APIs, see the <a target="_parent" href="http://developer.android.com/reference/android/renderscript/package-summary.html">android.renderscript</a> package reference. For more information on how to develop with Renderscript and how the runtime and Android framework APIs interact, see the <a target="_parent" href="http://developer.android.com/guide/topics/renderscript/index.html">Renderscript developer guide</a> and the <a target="_parent" href="http://developer.android.com/resources/samples/RenderScript/index.html">Renderscript samples</a>. </p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh.html b/docs/html/reference/renderscript/rs__allocation_8rsh.html
new file mode 100644
index 0000000..ca2663b
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__allocation_8rsh.html
@@ -0,0 +1,269 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rsGetAllocation</a> (const void *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rsAllocationGetDimX</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rsAllocationGetDimY</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rsAllocationGetDimZ</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rsAllocationGetDimLOD</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rsAllocationGetDimFaces</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a7e0a1753a930557f6dc87f25ed3fd23b">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a049ba2f6e6e18d47f2267474b2092822">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> z)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Allocation routines. </p>
+
+<p>Definition in file <a class="el" href="rs__allocation_8rsh_source.html">rs_allocation.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ac85f7ed88f38b35482c6d63b56d470fe"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimFaces" ref="ac85f7ed88f38b35482c6d63b56d470fe" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimFaces </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Query an allocation for the presence of more than one face.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t Returns 1 if more than one face is present, 0 otherwise. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac42a07c079d6b3c6bb21975170d4e11c"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimLOD" ref="ac42a07c079d6b3c6bb21975170d4e11c" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimLOD </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Query an allocation for the presence of more than one LOD.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t Returns 1 if more than one LOD is present, 0 otherwise. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3ca7f505a97d5b7f477bc65b9e77dafb"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimX" ref="a3ca7f505a97d5b7f477bc65b9e77dafb" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimX </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Query the dimension of an allocation.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The X dimension of the allocation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac889b866b465580eb313e5d2a9fcac3d"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimY" ref="ac889b866b465580eb313e5d2a9fcac3d" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimY </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Query the dimension of an allocation.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The Y dimension of the allocation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="acd6f1a2b2443e6ea39e6154577645d2c"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimZ" ref="acd6f1a2b2443e6ea39e6154577645d2c" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimZ </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Query the dimension of an allocation.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The Z dimension of the allocation. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aadad7654929c451be299df125061c9ba"></a><!-- doxytag: member="rs_allocation.rsh::rsGetAllocation" ref="aadad7654929c451be299df125061c9ba" args="(const void *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structrs__allocation.html">rs_allocation</a> rsGetAllocation </td>
+          <td>(</td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the Allocation for a given pointer. The pointer should point within a valid allocation. The results are undefined if the pointer is not from a valid allocation. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3fd30b4388748601e025bb3566ce0cbc"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="a3fd30b4388748601e025bb3566ce0cbc" args="(rs_allocation, uint32_t x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const void* rsGetElementAt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>x</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Extract a single element from an allocation. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7e0a1753a930557f6dc87f25ed3fd23b"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="a7e0a1753a930557f6dc87f25ed3fd23b" args="(rs_allocation, uint32_t x, uint32_t y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const void* rsGetElementAt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a049ba2f6e6e18d47f2267474b2092822"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="a049ba2f6e6e18d47f2267474b2092822" args="(rs_allocation, uint32_t x, uint32_t y, uint32_t z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const void* rsGetElementAt </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh_source.html b/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
new file mode 100644
index 0000000..0d1c167
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_allocation.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__allocation_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ALLOCATION_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ALLOCATION_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="keyword">extern</span> <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> __attribute__((overloadable))
+<a name="l00032"></a>00032     <a class="code" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rsGetAllocation</a>(const <span class="keywordtype">void</span> *);
+<a name="l00033"></a>00033 
+<a name="l00039"></a>00039 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00040"></a>00040     <a class="code" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rsAllocationGetDimX</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
+<a name="l00041"></a>00041 
+<a name="l00047"></a>00047 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00048"></a>00048     <a class="code" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rsAllocationGetDimY</a>(rs_allocation);
+<a name="l00049"></a>00049 
+<a name="l00055"></a>00055 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00056"></a>00056     <a class="code" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rsAllocationGetDimZ</a>(rs_allocation);
+<a name="l00057"></a>00057 
+<a name="l00063"></a>00063 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00064"></a>00064     <a class="code" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rsAllocationGetDimLOD</a>(rs_allocation);
+<a name="l00065"></a>00065 
+<a name="l00071"></a>00071 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00072"></a>00072     <a class="code" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rsAllocationGetDimFaces</a>(rs_allocation);
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00075"></a>00075 <span class="preprocessor"></span>
+<a name="l00089"></a>00089 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00090"></a>00090     rsAllocationCopy1DRange(rs_allocation dstAlloc,
+<a name="l00091"></a>00091                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstOff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip,
+<a name="l00092"></a>00092                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> count,
+<a name="l00093"></a>00093                             rs_allocation srcAlloc,
+<a name="l00094"></a>00094                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcOff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip);
+<a name="l00095"></a>00095 
+<a name="l00117"></a>00117 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00118"></a>00118     rsAllocationCopy2DRange(rs_allocation dstAlloc,
+<a name="l00119"></a>00119                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstXoff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstYoff,
+<a name="l00120"></a>00120                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip,
+<a name="l00121"></a>00121                             rs_allocation_cubemap_face dstFace,
+<a name="l00122"></a>00122                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> width, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> height,
+<a name="l00123"></a>00123                             rs_allocation srcAlloc,
+<a name="l00124"></a>00124                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcXoff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcYoff,
+<a name="l00125"></a>00125                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip,
+<a name="l00126"></a>00126                             rs_allocation_cubemap_face srcFace);
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00129"></a>00129 <span class="preprocessor"></span>
+<a name="l00133"></a>00133 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">void</span> * __attribute__((overloadable))
+<a name="l00134"></a>00134     <a class="code" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rsGetElementAt</a>(rs_allocation, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x);
+<a name="l00138"></a>00138 extern const <span class="keywordtype">void</span> * __attribute__((overloadable))
+<a name="l00139"></a>00139     <a class="code" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rsGetElementAt</a>(rs_allocation, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
+<a name="l00143"></a>00143 extern const <span class="keywordtype">void</span> * __attribute__((overloadable))
+<a name="l00144"></a>00144     <a class="code" href="rs__allocation_8rsh.html#a3fd30b4388748601e025bb3566ce0cbc">rsGetElementAt</a>(rs_allocation, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> z);
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146 <span class="preprocessor">#endif</span>
+<a name="l00147"></a>00147 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh.html b/docs/html/reference/renderscript/rs__atomic_8rsh.html
new file mode 100644
index 0000000..3d0e97e
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__atomic_8rsh.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Atomic routines. </p>
+
+<p>Definition in file <a class="el" href="rs__atomic_8rsh_source.html">rs_atomic.rsh</a>.</p>
+</div></div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh_source.html b/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
new file mode 100644
index 0000000..a1400bd
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_atomic.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__atomic_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ATOMIC_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ATOMIC_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span>
+<a name="l00036"></a>00036 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00037"></a>00037     rsAtomicInc(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr);
+<a name="l00046"></a>00046 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00047"></a>00047     rsAtomicInc(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr);
+<a name="l00048"></a>00048 
+<a name="l00056"></a>00056 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00057"></a>00057     rsAtomicDec(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr);
+<a name="l00065"></a>00065 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00066"></a>00066     rsAtomicDec(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr);
+<a name="l00067"></a>00067 
+<a name="l00076"></a>00076 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00077"></a>00077     rsAtomicAdd(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00086"></a>00086 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00087"></a>00087     rsAtomicAdd(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00088"></a>00088 
+<a name="l00097"></a>00097 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00098"></a>00098     rsAtomicSub(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00107"></a>00107 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00108"></a>00108     rsAtomicSub(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00109"></a>00109 
+<a name="l00118"></a>00118 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00119"></a>00119     rsAtomicAnd(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00128"></a>00128 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00129"></a>00129     rsAtomicAnd(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00130"></a>00130 
+<a name="l00139"></a>00139 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00140"></a>00140     rsAtomicOr(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00149"></a>00149 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00150"></a>00150     rsAtomicOr(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00151"></a>00151 
+<a name="l00160"></a>00160 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00161"></a>00161     rsAtomicXor(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00170"></a>00170 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00171"></a>00171     rsAtomicXor(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00172"></a>00172 
+<a name="l00182"></a>00182 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00183"></a>00183     rsAtomicMin(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00193"></a>00193 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00194"></a>00194     rsAtomicMin(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00195"></a>00195 
+<a name="l00205"></a>00205 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00206"></a>00206     rsAtomicMax(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
+<a name="l00216"></a>00216 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00217"></a>00217     rsAtomicMax(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
+<a name="l00218"></a>00218 
+<a name="l00230"></a>00230 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
+<a name="l00231"></a>00231     rsAtomicCas(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue);
+<a name="l00232"></a>00232 
+<a name="l00244"></a>00244 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
+<a name="l00245"></a>00245     rsAtomicCas(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue);
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00248"></a>00248 <span class="preprocessor"></span>
+<a name="l00249"></a>00249 <span class="preprocessor">#endif</span>
+<a name="l00250"></a>00250 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh.html b/docs/html/reference/renderscript/rs__cl_8rsh.html
new file mode 100644
index 0000000..5c499e6
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__cl_8rsh.html
@@ -0,0 +1,1938 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2c0c7c00815bd480fcda80d1144ac20d">acospi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a679b63e86358fc962cb343eb6263496b">asinpi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a> (float y, float x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a420d4aaea0e53d7172845a21a1e648ea">atanpi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9aed0a1613c86acf5e4c5ad3290a4745">atan2pi</a> (float y, float x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a07b12188bd53c6b584274892f6abf425">cospi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4b51589157c9ce600ea6156be51d8d18">exp10</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a> (float, float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a> (float a, float b, float c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ac5277212e0df309a0a7c908424f7b14b">fract</a> (float v, float *iptr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a> (float v, int *iptr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a> (float x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">lgamma</a> (float x, int *y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2fb571ae932f671ff3e9e97f2d3fabb7">log2</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a> (float a, float b, float c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a> (float x, float *iret)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#afd46205452017b741abb2e17fc28557d">pown</a> (float v, int p)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3ff65421721ec8e6ce8d875a563d005f">powr</a> (float v, float p)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a> (float x, float y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af169e7e1c575b7c24c1834569223077f">rootn</a> (float v, int n)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rsqrt</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a240f7c7c20b432a30dc660b5dd4cd320">sincos</a> (float v, float *cosptr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4fe4fef049786e888526d6f37b912b0a">sinpi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad8bfb083dd3979a305e594a0d6e581c4">tanpi</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a> (float amount, float low, float high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">degrees</a> (float radians)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a> (float start, float stop, float amount)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aaef2526c4d190ba6f7301b4e810917a7">radians</a> (float degrees)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a> (float edge, float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3e6d477a06dec7070f073eec9d8f420c">sign</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a0f7beb26bb4aa30535babd14492a7e90">cross</a> (<a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> lhs, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a> (float lhs, float rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a> (float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">distance</a> (float lhs, float rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">normalize</a> (float v)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Basic math functions. </p>
+
+<p>Definition in file <a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a07648648c7f857cfd1479821d4389751"></a><!-- doxytag: member="rs_cl.rsh::acos" ref="a07648648c7f857cfd1479821d4389751" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float acos </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse cosine.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a6575106413ec72448439ef67f1309424"></a><!-- doxytag: member="rs_cl.rsh::acosh" ref="a6575106413ec72448439ef67f1309424" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float acosh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse hyperbolic cosine.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a2c0c7c00815bd480fcda80d1144ac20d"></a><!-- doxytag: member="rs_cl.rsh::acospi" ref="a2c0c7c00815bd480fcda80d1144ac20d" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float acospi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse cosine divided by PI.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a78b9d0583bd0699e2eac30d2a136817a"></a><!-- doxytag: member="rs_cl.rsh::asin" ref="a78b9d0583bd0699e2eac30d2a136817a" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float asin </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse sine.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a4e3fe465ed5541af53192c59c80af1a0"></a><!-- doxytag: member="rs_cl.rsh::asinh" ref="a4e3fe465ed5541af53192c59c80af1a0" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float asinh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse hyperbolic sine.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a679b63e86358fc962cb343eb6263496b"></a><!-- doxytag: member="rs_cl.rsh::asinpi" ref="a679b63e86358fc962cb343eb6263496b" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float asinpi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse sine divided by PI.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="ab790c3a7df8fcbeab77f6c0e3b4dcada"></a><!-- doxytag: member="rs_cl.rsh::atan" ref="ab790c3a7df8fcbeab77f6c0e3b4dcada" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float atan </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse tangent.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="aaf4b636b09041878e1542054c73d81e9"></a><!-- doxytag: member="rs_cl.rsh::atan2" ref="aaf4b636b09041878e1542054c73d81e9" args="(float y, float x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float atan2 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse tangent of y / x.</p>
+<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9aed0a1613c86acf5e4c5ad3290a4745"></a><!-- doxytag: member="rs_cl.rsh::atan2pi" ref="a9aed0a1613c86acf5e4c5ad3290a4745" args="(float y, float x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float atan2pi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse tangent of y / x, divided by PI.</p>
+<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a83bdf415cc561ff6237a124273d9fb0d"></a><!-- doxytag: member="rs_cl.rsh::atanh" ref="a83bdf415cc561ff6237a124273d9fb0d" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float atanh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse hyperbolic tangent.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="a420d4aaea0e53d7172845a21a1e648ea"></a><!-- doxytag: member="rs_cl.rsh::atanpi" ref="a420d4aaea0e53d7172845a21a1e648ea" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float atanpi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the inverse tangent divided by PI.</p>
+<p>Supports float, float2, float3, float4 </p>
+
+</div>
+</div>
+<a class="anchor" id="ae9d1787b55c2587478a24d96573225df"></a><!-- doxytag: member="rs_cl.rsh::cbrt" ref="ae9d1787b55c2587478a24d96573225df" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float cbrt </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the cube root.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa8fc6daff743a1b635ccbf9af83fe4e4"></a><!-- doxytag: member="rs_cl.rsh::ceil" ref="aa8fc6daff743a1b635ccbf9af83fe4e4" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float ceil </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the smallest integer not less than a value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad4dab580aba6cf15539b407b9163dfde"></a><!-- doxytag: member="rs_cl.rsh::clamp" ref="ad4dab580aba6cf15539b407b9163dfde" args="(float amount, float low, float high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> clamp </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the minimum of two values.</p>
+<p>Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. Return the maximum of two values.</p>
+<p>Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. Clamp a value to a specified high and low bound.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">amount</td><td>value to be clamped. Supports 1,2,3,4 components </td></tr>
+    <tr><td class="paramname">low</td><td>Lower bound, must be scalar or matching vector. </td></tr>
+    <tr><td class="paramname">high</td><td>High bound, must match type of low </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a29f2602d95aa7b3950e2b77b3e268f7e"></a><!-- doxytag: member="rs_cl.rsh::copysign" ref="a29f2602d95aa7b3950e2b77b3e268f7e" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float copysign </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Copy the sign bit from y to x.</p>
+<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8eec7aeb4b0c46b06cbcd1a3ac3e6f05"></a><!-- doxytag: member="rs_cl.rsh::cos" ref="a8eec7aeb4b0c46b06cbcd1a3ac3e6f05" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float cos </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the cosine.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac8d88d83182afd591401eaed101d9670"></a><!-- doxytag: member="rs_cl.rsh::cosh" ref="ac8d88d83182afd591401eaed101d9670" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float cosh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the hypebolic cosine.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a07b12188bd53c6b584274892f6abf425"></a><!-- doxytag: member="rs_cl.rsh::cospi" ref="a07b12188bd53c6b584274892f6abf425" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float cospi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the cosine of the value * PI.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0f7beb26bb4aa30535babd14492a7e90"></a><!-- doxytag: member="rs_cl.rsh::cross" ref="a0f7beb26bb4aa30535babd14492a7e90" args="(float3 lhs, float3 rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> cross </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the cross product of two vectors.</p>
+<p>Supports 3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="adc1b551193e66d8037daa1721df4d29c"></a><!-- doxytag: member="rs_cl.rsh::degrees" ref="adc1b551193e66d8037daa1721df4d29c" args="(float radians)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float degrees </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>radians</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Convert from radians to degrees.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a4488863373be92e113e9d24aa3d21e76"></a><!-- doxytag: member="rs_cl.rsh::distance" ref="a4488863373be92e113e9d24aa3d21e76" args="(float lhs, float rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float distance </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the distance between two points.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a70544acaca578035a849eef67d62c449"></a><!-- doxytag: member="rs_cl.rsh::dot" ref="a70544acaca578035a849eef67d62c449" args="(float lhs, float rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float dot </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the dot product of two vectors.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a139f102df651c25c26dd35d549173f57"></a><!-- doxytag: member="rs_cl.rsh::erf" ref="a139f102df651c25c26dd35d549173f57" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float erf </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the error function.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2e24dc8594e758b64c340153f67a533c"></a><!-- doxytag: member="rs_cl.rsh::erfc" ref="a2e24dc8594e758b64c340153f67a533c" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float erfc </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the complementary error function.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6d9aac64c2686961ca8f30e3c34fef36"></a><!-- doxytag: member="rs_cl.rsh::exp" ref="a6d9aac64c2686961ca8f30e3c34fef36" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float exp </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return e ^ value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4b51589157c9ce600ea6156be51d8d18"></a><!-- doxytag: member="rs_cl.rsh::exp10" ref="a4b51589157c9ce600ea6156be51d8d18" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float exp10 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return 10 ^ value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a39bca19ee2b1aa95144e58eb4a1e4f88"></a><!-- doxytag: member="rs_cl.rsh::exp2" ref="a39bca19ee2b1aa95144e58eb4a1e4f88" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float exp2 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return 2 ^ value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7996044b67be921a5e58e2fe76af66e2"></a><!-- doxytag: member="rs_cl.rsh::expm1" ref="a7996044b67be921a5e58e2fe76af66e2" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float expm1 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (e ^ value) - 1.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad6e897f1acae252ec0901e3b122992ea"></a><!-- doxytag: member="rs_cl.rsh::fabs" ref="ad6e897f1acae252ec0901e3b122992ea" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fabs </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the absolute value of a value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae7a7bac0f4e244594078f87b42c8716a"></a><!-- doxytag: member="rs_cl.rsh::fdim" ref="ae7a7bac0f4e244594078f87b42c8716a" args="(float, float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fdim </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the positive difference between two values.</p>
+<p>Supports float, float2, float3, float4. Both arguments must be of the same type. </p>
+
+</div>
+</div>
+<a class="anchor" id="aae2da38a7246378dff8014ec407a30c3"></a><!-- doxytag: member="rs_cl.rsh::floor" ref="aae2da38a7246378dff8014ec407a30c3" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float floor </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the smallest integer not greater than a value.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac42909daec463fe449743e70baf8360d"></a><!-- doxytag: member="rs_cl.rsh::fma" ref="ac42909daec463fe449743e70baf8360d" args="(float a, float b, float c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fma </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return a*b + c.</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="a60f2072d8a746e7fe05cd46dea0fefcc"></a><!-- doxytag: member="rs_cl.rsh::fmax" ref="a60f2072d8a746e7fe05cd46dea0fefcc" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fmax </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (x &lt; y ? y : x)</p>
+<p>Supports float, float2, float3, float4. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x,:</td><td>may be float, float2, float3, float4 </td></tr>
+    <tr><td class="paramname">y,:</td><td>may be float or vector. If vector must match type of x. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1fd9d57c6c992866bf5161be2cf4c447"></a><!-- doxytag: member="rs_cl.rsh::fmin" ref="a1fd9d57c6c992866bf5161be2cf4c447" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fmin </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (x &gt; y ? y : x)</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x,:</td><td>may be float, float2, float3, float4 </td></tr>
+    <tr><td class="paramname">y,:</td><td>may be float or vector. If vector must match type of x. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a31d5e179730ae44e1dbc74c1535f392e"></a><!-- doxytag: member="rs_cl.rsh::fmod" ref="a31d5e179730ae44e1dbc74c1535f392e" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float fmod </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the remainder from x / y</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac5277212e0df309a0a7c908424f7b14b"></a><!-- doxytag: member="rs_cl.rsh::fract" ref="ac5277212e0df309a0a7c908424f7b14b" args="(float v, float *iptr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float fract </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>iptr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return fractional part of v</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iptr</td><td>iptr[0] will be set to the floor of the input value. Supports float, float2, float3, float4. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a778635fffed3cee8ab0800482ba53a30"></a><!-- doxytag: member="rs_cl.rsh::frexp" ref="a778635fffed3cee8ab0800482ba53a30" args="(float v, int *iptr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float frexp </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>iptr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the mantissa and place the exponent into iptr[0]</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>Supports float, float2, float3, float4. </td></tr>
+    <tr><td class="paramname">iptr</td><td>Must have the same vector size as v. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a147f38d6e41f45de9b5e7c6f3dcac010"></a><!-- doxytag: member="rs_cl.rsh::hypot" ref="a147f38d6e41f45de9b5e7c6f3dcac010" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float hypot </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return sqrt(x*x + y*y)</p>
+<p>Supports float, float2, float3, float4. </p>
+
+</div>
+</div>
+<a class="anchor" id="aad9a8beba52acb77b1efeba432e6cc2c"></a><!-- doxytag: member="rs_cl.rsh::ilogb" ref="aad9a8beba52acb77b1efeba432e6cc2c" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int ilogb </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the integer exponent of a value</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a013bc1dcda984cbc608e123ed38491e6"></a><!-- doxytag: member="rs_cl.rsh::ldexp" ref="a013bc1dcda984cbc608e123ed38491e6" args="(float x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float ldexp </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (x * 2^y)</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>Supports 1,2,3,4 components </td></tr>
+    <tr><td class="paramname">y</td><td>Supports single component or matching vector. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1a222b7879342279e1e0070d6afd9e18"></a><!-- doxytag: member="rs_cl.rsh::length" ref="a1a222b7879342279e1e0070d6afd9e18" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float length </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the length of a vector.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a3ff36f9b21927d6b4b58616e48fddcb4"></a><!-- doxytag: member="rs_cl.rsh::lgamma" ref="a3ff36f9b21927d6b4b58616e48fddcb4" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float lgamma </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the log gamma</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a735f4e14e33c50348ef41220f9210bcc"></a><!-- doxytag: member="rs_cl.rsh::lgamma" ref="a735f4e14e33c50348ef41220f9210bcc" args="(float x, int *y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float lgamma </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the log gamma and sign</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>Supports 1,2,3,4 components </td></tr>
+    <tr><td class="paramname">y</td><td>Supports matching vector. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3ff85f5f4b206ecf9ec9d128d7d18a08"></a><!-- doxytag: member="rs_cl.rsh::log" ref="a3ff85f5f4b206ecf9ec9d128d7d18a08" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float log </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the natural logarithm</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="af5c1bdba2a13aa2e2b0722287f6a919f"></a><!-- doxytag: member="rs_cl.rsh::log10" ref="af5c1bdba2a13aa2e2b0722287f6a919f" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float log10 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the base 10 logarithm</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="ae10541ede49062ef7f977712c4878c1f"></a><!-- doxytag: member="rs_cl.rsh::log1p" ref="ae10541ede49062ef7f977712c4878c1f" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float log1p </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the natural logarithm of (v + 1.0f)</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a2fb571ae932f671ff3e9e97f2d3fabb7"></a><!-- doxytag: member="rs_cl.rsh::log2" ref="a2fb571ae932f671ff3e9e97f2d3fabb7" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float log2 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the base 2 logarithm</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a28742d6ce2f20a61f16ecc08ed499871"></a><!-- doxytag: member="rs_cl.rsh::logb" ref="a28742d6ce2f20a61f16ecc08ed499871" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float logb </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the exponent of the value.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a4f9086698f1eb466ba2dccf7e331cdc3"></a><!-- doxytag: member="rs_cl.rsh::mad" ref="a4f9086698f1eb466ba2dccf7e331cdc3" args="(float a, float b, float c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float mad </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>c</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute (a * b) + c</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="af4c76d51368c8e330cb59ea5a0a2310e"></a><!-- doxytag: member="rs_cl.rsh::mix" ref="af4c76d51368c8e330cb59ea5a0a2310e" args="(float start, float stop, float amount)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> mix </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>start</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>stop</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>amount</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>return start + ((stop - start) * amount);</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a841633bcdcaeb6a514d9c6460f0adf2d"></a><!-- doxytag: member="rs_cl.rsh::modf" ref="a841633bcdcaeb6a514d9c6460f0adf2d" args="(float x, float *iret)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float modf </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>iret</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the integral and fractional components of a number Supports 1,2,3,4 components</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>Source value </td></tr>
+    <tr><td class="paramname">iret</td><td>iret[0] will be set to the integral portion of the number. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The floating point portion of the value. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="adb11df05fb9985595af0a7bd882bdeac"></a><!-- doxytag: member="rs_cl.rsh::nextafter" ref="adb11df05fb9985595af0a7bd882bdeac" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float nextafter </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the next floating point number from x towards y.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a373e03e92a1b7f3fdea5ca4ca159d2a8"></a><!-- doxytag: member="rs_cl.rsh::normalize" ref="a373e03e92a1b7f3fdea5ca4ca159d2a8" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> normalize </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Normalize a vector.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a9243de1d67fcc847a89f95748d664b19"></a><!-- doxytag: member="rs_cl.rsh::pow" ref="a9243de1d67fcc847a89f95748d664b19" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float pow </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return x ^ y.</p>
+<p>Supports float, float2, float3, float4. Both arguments must be of the same type. </p>
+
+</div>
+</div>
+<a class="anchor" id="afd46205452017b741abb2e17fc28557d"></a><!-- doxytag: member="rs_cl.rsh::pown" ref="afd46205452017b741abb2e17fc28557d" args="(float v, int p)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float pown </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>p</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (v ^ p).</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a3ff65421721ec8e6ce8d875a563d005f"></a><!-- doxytag: member="rs_cl.rsh::powr" ref="a3ff65421721ec8e6ce8d875a563d005f" args="(float v, float p)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float powr </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>p</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (v ^ p). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>must be greater than 0.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="aaef2526c4d190ba6f7301b4e810917a7"></a><!-- doxytag: member="rs_cl.rsh::radians" ref="aaef2526c4d190ba6f7301b4e810917a7" args="(float degrees)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float radians </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>degrees</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Convert from degrees to radians.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a5188ac0e3af95b0956c6abeafb74fda9"></a><!-- doxytag: member="rs_cl.rsh::remainder" ref="a5188ac0e3af95b0956c6abeafb74fda9" args="(float x, float y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float remainder </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return round x/y to the nearest integer then compute the remander.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="adb0ffe344ae56ca7fc9083c1f2943e55"></a><!-- doxytag: member="rs_cl.rsh::rint" ref="adb0ffe344ae56ca7fc9083c1f2943e55" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float rint </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Round to the nearest integral value.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="af169e7e1c575b7c24c1834569223077f"></a><!-- doxytag: member="rs_cl.rsh::rootn" ref="af169e7e1c575b7c24c1834569223077f" args="(float v, int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float rootn </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>n</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the Nth root of a value.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="aff4846ab5b947550814d5414a2c3626f"></a><!-- doxytag: member="rs_cl.rsh::round" ref="aff4846ab5b947550814d5414a2c3626f" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float round </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Round to the nearest integral value. Half values are rounded away from zero.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a5db00fde9e6bff693a38f3a37e7a1f70"></a><!-- doxytag: member="rs_cl.rsh::rsqrt" ref="a5db00fde9e6bff693a38f3a37e7a1f70" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float rsqrt </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return (1 / sqrt(value)).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>The incoming value in radians Supports 1,2,3,4 components </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3e6d477a06dec7070f073eec9d8f420c"></a><!-- doxytag: member="rs_cl.rsh::sign" ref="a3e6d477a06dec7070f073eec9d8f420c" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float sign </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>if (v &lt; 0) return -1.f; else if (v &gt; 0) return 1.f; else return 0.f;</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a8c8cd526b44eb55aede77cf659f24306"></a><!-- doxytag: member="rs_cl.rsh::sin" ref="a8c8cd526b44eb55aede77cf659f24306" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float sin </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the sine of a value specified in radians.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>The incoming value in radians Supports 1,2,3,4 components </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a240f7c7c20b432a30dc660b5dd4cd320"></a><!-- doxytag: member="rs_cl.rsh::sincos" ref="a240f7c7c20b432a30dc660b5dd4cd320" args="(float v, float *cosptr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float sincos </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>cosptr</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the sine and cosine of a value.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>sine </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
+    <tr><td class="paramname">*cosptr</td><td>cosptr[0] will be set to the cosine value.</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="ae686e0cc567f7ee2b0a84706aa486e4a"></a><!-- doxytag: member="rs_cl.rsh::sinh" ref="ae686e0cc567f7ee2b0a84706aa486e4a" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float sinh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the hyperbolic sine of a value specified in radians.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a4fe4fef049786e888526d6f37b912b0a"></a><!-- doxytag: member="rs_cl.rsh::sinpi" ref="a4fe4fef049786e888526d6f37b912b0a" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float sinpi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the sin(v * PI).</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a92da0faef80c4d8f66e954c8c169a729"></a><!-- doxytag: member="rs_cl.rsh::sqrt" ref="a92da0faef80c4d8f66e954c8c169a729" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float sqrt </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the square root of a value.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="a4f7ba6882099d16853d0415982121900"></a><!-- doxytag: member="rs_cl.rsh::step" ref="a4f7ba6882099d16853d0415982121900" args="(float edge, float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> step </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>edge</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>if (v &lt; edge) return 0.f; else return 1.f;</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="af12e245af8ff9bb72b5000e7c26cd8fe"></a><!-- doxytag: member="rs_cl.rsh::tan" ref="af12e245af8ff9bb72b5000e7c26cd8fe" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float tan </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the tangent of a value.</p>
+<p>Supports 1,2,3,4 components </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abc36e89ddb87ea78451d1c5921ddbd8d"></a><!-- doxytag: member="rs_cl.rsh::tanh" ref="abc36e89ddb87ea78451d1c5921ddbd8d" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float tanh </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return the hyperbolic tangent of a value.</p>
+<p>Supports 1,2,3,4 components </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad8bfb083dd3979a305e594a0d6e581c4"></a><!-- doxytag: member="rs_cl.rsh::tanpi" ref="ad8bfb083dd3979a305e594a0d6e581c4" args="(float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float tanpi </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return tan(v * PI)</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="ab9f4cbfd2470420ee302f28cf3de6dd0"></a><!-- doxytag: member="rs_cl.rsh::tgamma" ref="ab9f4cbfd2470420ee302f28cf3de6dd0" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float tgamma </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Compute the gamma function of a value.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+<a class="anchor" id="ad1a7c65693231219db1babeae1c41f15"></a><!-- doxytag: member="rs_cl.rsh::trunc" ref="ad1a7c65693231219db1babeae1c41f15" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float trunc </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Round to integral using truncation.</p>
+<p>Supports 1,2,3,4 components </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh_source.html b/docs/html/reference/renderscript/rs__cl_8rsh_source.html
new file mode 100644
index 0000000..73ecdc6
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__cl_8rsh_source.html
@@ -0,0 +1,475 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_cl.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__cl_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_CL_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CL_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="comment">// Conversions</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#define CVT_FUNC_2(typeout, typein)                             \</span>
+<a name="l00028"></a>00028 <span class="preprocessor">_RS_RUNTIME typeout##2 __attribute__((overloadable))             \</span>
+<a name="l00029"></a>00029 <span class="preprocessor">        convert_##typeout##2(typein##2 v);                      \</span>
+<a name="l00030"></a>00030 <span class="preprocessor">_RS_RUNTIME typeout##3 __attribute__((overloadable))             \</span>
+<a name="l00031"></a>00031 <span class="preprocessor">        convert_##typeout##3(typein##3 v);                      \</span>
+<a name="l00032"></a>00032 <span class="preprocessor">_RS_RUNTIME typeout##4 __attribute__((overloadable))             \</span>
+<a name="l00033"></a>00033 <span class="preprocessor">        convert_##typeout##4(typein##4 v);</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="preprocessor">#define CVT_FUNC(type)  CVT_FUNC_2(type, uchar)     \</span>
+<a name="l00037"></a>00037 <span class="preprocessor">                        CVT_FUNC_2(type, char)      \</span>
+<a name="l00038"></a>00038 <span class="preprocessor">                        CVT_FUNC_2(type, ushort)    \</span>
+<a name="l00039"></a>00039 <span class="preprocessor">                        CVT_FUNC_2(type, short)     \</span>
+<a name="l00040"></a>00040 <span class="preprocessor">                        CVT_FUNC_2(type, uint)      \</span>
+<a name="l00041"></a>00041 <span class="preprocessor">                        CVT_FUNC_2(type, int)       \</span>
+<a name="l00042"></a>00042 <span class="preprocessor">                        CVT_FUNC_2(type, float)</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 CVT_FUNC(<span class="keywordtype">char</span>)
+<a name="l00045"></a>00045 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>)
+<a name="l00046"></a>00046 CVT_FUNC(<span class="keywordtype">short</span>)
+<a name="l00047"></a>00047 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>)
+<a name="l00048"></a>00048 CVT_FUNC(<span class="keywordtype">int</span>)
+<a name="l00049"></a>00049 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)
+<a name="l00050"></a>00050 CVT_FUNC(<span class="keywordtype">float</span>)
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <span class="comment">// Float ops, 6.11.2</span>
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054 <span class="preprocessor">#define FN_FUNC_FN(fnc)                                         \</span>
+<a name="l00055"></a>00055 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v);  \</span>
+<a name="l00056"></a>00056 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v);  \</span>
+<a name="l00057"></a>00057 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v);</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>
+<a name="l00059"></a>00059 <span class="preprocessor">#define IN_FUNC_FN(fnc)                                         \</span>
+<a name="l00060"></a>00060 <span class="preprocessor">_RS_RUNTIME int2 __attribute__((overloadable)) fnc(float2 v);    \</span>
+<a name="l00061"></a>00061 <span class="preprocessor">_RS_RUNTIME int3 __attribute__((overloadable)) fnc(float3 v);    \</span>
+<a name="l00062"></a>00062 <span class="preprocessor">_RS_RUNTIME int4 __attribute__((overloadable)) fnc(float4 v);</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span>
+<a name="l00064"></a>00064 <span class="preprocessor">#define FN_FUNC_FN_FN(fnc)                                                  \</span>
+<a name="l00065"></a>00065 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, float2 v2);  \</span>
+<a name="l00066"></a>00066 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, float3 v2);  \</span>
+<a name="l00067"></a>00067 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, float4 v2);</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00069"></a>00069 <span class="preprocessor">#define FN_FUNC_FN_F(fnc)                                                   \</span>
+<a name="l00070"></a>00070 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, float v2);   \</span>
+<a name="l00071"></a>00071 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, float v2);   \</span>
+<a name="l00072"></a>00072 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, float v2);</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span>
+<a name="l00074"></a>00074 <span class="preprocessor">#define FN_FUNC_FN_IN(fnc)                                                  \</span>
+<a name="l00075"></a>00075 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int2 v2);    \</span>
+<a name="l00076"></a>00076 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int3 v2);    \</span>
+<a name="l00077"></a>00077 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int4 v2);    \</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>
+<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_I(fnc)                                                   \</span>
+<a name="l00080"></a>00080 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int v2);     \</span>
+<a name="l00081"></a>00081 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int v2);     \</span>
+<a name="l00082"></a>00082 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int v2);</span>
+<a name="l00083"></a>00083 <span class="preprocessor"></span>
+<a name="l00084"></a>00084 <span class="preprocessor">#define FN_FUNC_FN_PFN(fnc)                     \</span>
+<a name="l00085"></a>00085 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) \</span>
+<a name="l00086"></a>00086 <span class="preprocessor">        fnc(float2 v1, float2 *v2);             \</span>
+<a name="l00087"></a>00087 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) \</span>
+<a name="l00088"></a>00088 <span class="preprocessor">        fnc(float3 v1, float3 *v2);             \</span>
+<a name="l00089"></a>00089 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) \</span>
+<a name="l00090"></a>00090 <span class="preprocessor">        fnc(float4 v1, float4 *v2);</span>
+<a name="l00091"></a>00091 <span class="preprocessor"></span>
+<a name="l00092"></a>00092 <span class="preprocessor">#define FN_FUNC_FN_PIN(fnc)                                                 \</span>
+<a name="l00093"></a>00093 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int2 *v2);   \</span>
+<a name="l00094"></a>00094 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int3 *v2);   \</span>
+<a name="l00095"></a>00095 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int4 *v2);</span>
+<a name="l00096"></a>00096 <span class="preprocessor"></span>
+<a name="l00097"></a>00097 <span class="preprocessor">#define FN_FUNC_FN_FN_FN(fnc)                   \</span>
+<a name="l00098"></a>00098 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) \</span>
+<a name="l00099"></a>00099 <span class="preprocessor">        fnc(float2 v1, float2 v2, float2 v3);   \</span>
+<a name="l00100"></a>00100 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) \</span>
+<a name="l00101"></a>00101 <span class="preprocessor">        fnc(float3 v1, float3 v2, float3 v3);   \</span>
+<a name="l00102"></a>00102 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) \</span>
+<a name="l00103"></a>00103 <span class="preprocessor">        fnc(float4 v1, float4 v2, float4 v3);</span>
+<a name="l00104"></a>00104 <span class="preprocessor"></span>
+<a name="l00105"></a>00105 <span class="preprocessor">#define FN_FUNC_FN_FN_PIN(fnc)                  \</span>
+<a name="l00106"></a>00106 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) \</span>
+<a name="l00107"></a>00107 <span class="preprocessor">        fnc(float2 v1, float2 v2, int2 *v3);    \</span>
+<a name="l00108"></a>00108 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) \</span>
+<a name="l00109"></a>00109 <span class="preprocessor">        fnc(float3 v1, float3 v2, int3 *v3);    \</span>
+<a name="l00110"></a>00110 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) \</span>
+<a name="l00111"></a>00111 <span class="preprocessor">        fnc(float4 v1, float4 v2, int4 *v3);</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00113"></a>00113 
+<a name="l00119"></a>00119 <span class="keyword">extern</span> <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>(<span class="keywordtype">float</span>);
+<a name="l00120"></a>00120 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>)
+<a name="l00121"></a>00121 
+<a name="l00127"></a>00127 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a>(<span class="keywordtype">float</span>);
+<a name="l00128"></a>00128 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a>)
+<a name="l00129"></a>00129 
+<a name="l00135"></a>00135 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2c0c7c00815bd480fcda80d1144ac20d">acospi</a>(<span class="keywordtype">float</span> v);
+<a name="l00136"></a>00136 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a2c0c7c00815bd480fcda80d1144ac20d">acospi</a>)
+<a name="l00137"></a>00137 
+<a name="l00143"></a>00143 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a>(<span class="keywordtype">float</span>);
+<a name="l00144"></a>00144 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a>)
+<a name="l00145"></a>00145 
+<a name="l00151"></a>00151 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a>(<span class="keywordtype">float</span>);
+<a name="l00152"></a>00152 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a>)
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 
+<a name="l00160"></a>00160 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a679b63e86358fc962cb343eb6263496b">asinpi</a>(<span class="keywordtype">float</span> v);
+<a name="l00161"></a>00161 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a679b63e86358fc962cb343eb6263496b">asinpi</a>)
+<a name="l00162"></a>00162 
+<a name="l00168"></a>00168 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a>(<span class="keywordtype">float</span>);
+<a name="l00169"></a>00169 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a>)
+<a name="l00170"></a>00170 
+<a name="l00180"></a>00180 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a>(<span class="keywordtype">float</span> y, <span class="keywordtype">float</span> x);
+<a name="l00181"></a>00181 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a>)
+<a name="l00182"></a>00182 
+<a name="l00188"></a>00188 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a>(<span class="keywordtype">float</span>);
+<a name="l00189"></a>00189 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a>)
+<a name="l00190"></a>00190 
+<a name="l00196"></a>00196 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a420d4aaea0e53d7172845a21a1e648ea">atanpi</a>(<span class="keywordtype">float</span> v);
+<a name="l00197"></a>00197 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a420d4aaea0e53d7172845a21a1e648ea">atanpi</a>)
+<a name="l00198"></a>00198 
+<a name="l00208"></a>00208 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9aed0a1613c86acf5e4c5ad3290a4745">atan2pi</a>(<span class="keywordtype">float</span> y, <span class="keywordtype">float</span> x);
+<a name="l00209"></a>00209 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a9aed0a1613c86acf5e4c5ad3290a4745">atan2pi</a>)
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211 
+<a name="l00217"></a>00217 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a>(<span class="keywordtype">float</span>);
+<a name="l00218"></a>00218 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a>)
+<a name="l00219"></a>00219 
+<a name="l00225"></a>00225 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a>(<span class="keywordtype">float</span>);
+<a name="l00226"></a>00226 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a>)
+<a name="l00227"></a>00227 
+<a name="l00237"></a>00237 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00238"></a>00238 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a>)
+<a name="l00239"></a>00239 
+<a name="l00245"></a>00245 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>(<span class="keywordtype">float</span>);
+<a name="l00246"></a>00246 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>)
+<a name="l00247"></a>00247 
+<a name="l00253"></a>00253 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a>(<span class="keywordtype">float</span>);
+<a name="l00254"></a>00254 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a>)
+<a name="l00255"></a>00255 
+<a name="l00261"></a>00261 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a07b12188bd53c6b584274892f6abf425">cospi</a>(<span class="keywordtype">float</span> v);
+<a name="l00262"></a>00262 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a07b12188bd53c6b584274892f6abf425">cospi</a>)
+<a name="l00263"></a>00263 
+<a name="l00269"></a>00269 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a>(<span class="keywordtype">float</span>);
+<a name="l00270"></a>00270 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a>)
+<a name="l00271"></a>00271 
+<a name="l00277"></a>00277 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a>(<span class="keywordtype">float</span>);
+<a name="l00278"></a>00278 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a>)
+<a name="l00279"></a>00279 
+<a name="l00285"></a>00285 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a>(<span class="keywordtype">float</span>);
+<a name="l00286"></a>00286 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a>)
+<a name="l00287"></a>00287 
+<a name="l00293"></a>00293 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a>(<span class="keywordtype">float</span>);
+<a name="l00294"></a>00294 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a>)
+<a name="l00295"></a>00295 
+<a name="l00302"></a>00302 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00303"></a>00303 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a>)
+<a name="l00304"></a>00304 
+<a name="l00310"></a>00310 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4b51589157c9ce600ea6156be51d8d18">exp10</a>(<span class="keywordtype">float</span> v);
+<a name="l00311"></a>00311 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a4b51589157c9ce600ea6156be51d8d18">exp10</a>)
+<a name="l00312"></a>00312 
+<a name="l00318"></a>00318 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a>(<span class="keywordtype">float</span>);
+<a name="l00319"></a>00319 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a>)
+<a name="l00320"></a>00320 
+<a name="l00326"></a>00326 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a>(<span class="keywordtype">float</span>);
+<a name="l00327"></a>00327 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a>)
+<a name="l00328"></a>00328 
+<a name="l00335"></a>00335 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a>(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
+<a name="l00336"></a>00336 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a>)
+<a name="l00337"></a>00337 
+<a name="l00343"></a>00343 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a>(<span class="keywordtype">float</span>);
+<a name="l00344"></a>00344 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a>)
+<a name="l00345"></a>00345 
+<a name="l00351"></a>00351 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a>(<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> c);
+<a name="l00352"></a>00352 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a>)
+<a name="l00353"></a>00353 
+<a name="l00361"></a>00361 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00362"></a>00362 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a>);
+<a name="l00363"></a>00363 FN_FUNC_FN_F(fmax);
+<a name="l00364"></a>00364 
+<a name="l00371"></a>00371 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00372"></a>00372 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a>);
+<a name="l00373"></a>00373 FN_FUNC_FN_F(fmin);
+<a name="l00374"></a>00374 
+<a name="l00380"></a>00380 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00381"></a>00381 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a>)
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383 
+<a name="l00390"></a>00390 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ac5277212e0df309a0a7c908424f7b14b">fract</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> *iptr);
+<a name="l00391"></a>00391 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#ac5277212e0df309a0a7c908424f7b14b">fract</a>)
+<a name="l00392"></a>00392 
+<a name="l00399"></a>00399 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> *iptr);
+<a name="l00400"></a>00400 FN_FUNC_FN_PIN(<a class="code" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a>)
+<a name="l00401"></a>00401 
+<a name="l00407"></a>00407 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00408"></a>00408 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a>)
+<a name="l00409"></a>00409 
+<a name="l00415"></a>00415 extern <span class="keywordtype">int</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a>(<span class="keywordtype">float</span>);
+<a name="l00416"></a>00416 IN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a>)
+<a name="l00417"></a>00417 
+<a name="l00424"></a>00424 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">int</span> y);
+<a name="l00425"></a>00425 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>)
+<a name="l00426"></a>00426 FN_FUNC_FN_I(<a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>)
+<a name="l00427"></a>00427 
+<a name="l00433"></a>00433 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>(<span class="keywordtype">float</span>);
+<a name="l00434"></a>00434 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>)
+<a name="l00435"></a>00435 
+<a name="l00442"></a>00442 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">int</span>* y);
+<a name="l00443"></a>00443 FN_FUNC_FN_PIN(<a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>)
+<a name="l00444"></a>00444 
+<a name="l00450"></a>00450 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a>(<span class="keywordtype">float</span>);
+<a name="l00451"></a>00451 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a>)
+<a name="l00452"></a>00452 
+<a name="l00458"></a>00458 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a>(<span class="keywordtype">float</span>);
+<a name="l00459"></a>00459 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a>)
+<a name="l00460"></a>00460 
+<a name="l00466"></a>00466 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2fb571ae932f671ff3e9e97f2d3fabb7">log2</a>(<span class="keywordtype">float</span> v);
+<a name="l00467"></a>00467 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a2fb571ae932f671ff3e9e97f2d3fabb7">log2</a>)
+<a name="l00468"></a>00468 
+<a name="l00474"></a>00474 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a>(<span class="keywordtype">float</span> v);
+<a name="l00475"></a>00475 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a>)
+<a name="l00476"></a>00476 
+<a name="l00482"></a>00482 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a>(<span class="keywordtype">float</span>);
+<a name="l00483"></a>00483 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a>)
+<a name="l00484"></a>00484 
+<a name="l00490"></a>00490 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a>(<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> c);
+<a name="l00491"></a>00491 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a>)
+<a name="l00492"></a>00492 
+<a name="l00501"></a>00501 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> *iret);
+<a name="l00502"></a>00502 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>);
+<a name="l00503"></a>00503 
+<a name="l00504"></a>00504 <span class="comment">//extern float __attribute__((overloadable)) nan(uint);</span>
+<a name="l00505"></a>00505 
+<a name="l00511"></a>00511 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00512"></a>00512 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>)
+<a name="l00513"></a>00513 
+<a name="l00519"></a>00519 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#afd46205452017b741abb2e17fc28557d">pown</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> p);
+<a name="l00520"></a>00520 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#afd46205452017b741abb2e17fc28557d">pown</a>)
+<a name="l00521"></a>00521 
+<a name="l00528"></a>00528 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff65421721ec8e6ce8d875a563d005f">powr</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> p);
+<a name="l00529"></a>00529 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a3ff65421721ec8e6ce8d875a563d005f">powr</a>)
+<a name="l00530"></a>00530 
+<a name="l00536"></a>00536 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
+<a name="l00537"></a>00537 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a>)
+<a name="l00538"></a>00538 
+<a name="l00539"></a>00539 <span class="comment">// document once we know the precision of bionic</span>
+<a name="l00540"></a>00540 extern <span class="keywordtype">float</span> __attribute__((overloadable)) remquo(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">int</span> *);
+<a name="l00541"></a>00541 FN_FUNC_FN_FN_PIN(remquo)
+<a name="l00542"></a>00542 
+<a name="l00548"></a>00548 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a>(<span class="keywordtype">float</span>);
+<a name="l00549"></a>00549 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a>)
+<a name="l00550"></a>00550 
+<a name="l00556"></a>00556 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af169e7e1c575b7c24c1834569223077f">rootn</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> n);
+<a name="l00557"></a>00557 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#af169e7e1c575b7c24c1834569223077f">rootn</a>)
+<a name="l00558"></a>00558 
+<a name="l00564"></a>00564 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a>(<span class="keywordtype">float</span>);
+<a name="l00565"></a>00565 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a>)
+<a name="l00566"></a>00566 
+<a name="l00572"></a>00572 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(<span class="keywordtype">float</span>);
+<a name="l00573"></a>00573 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>)
+<a name="l00574"></a>00574 
+<a name="l00581"></a>00581 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rsqrt</a>(<span class="keywordtype">float</span> v);
+<a name="l00582"></a>00582 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a5db00fde9e6bff693a38f3a37e7a1f70">rsqrt</a>)
+<a name="l00583"></a>00583 
+<a name="l00590"></a>00590 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(<span class="keywordtype">float</span> v);
+<a name="l00591"></a>00591 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>)
+<a name="l00592"></a>00592 
+<a name="l00602"></a>00602 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a240f7c7c20b432a30dc660b5dd4cd320">sincos</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> *cosptr);
+<a name="l00603"></a>00603 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a240f7c7c20b432a30dc660b5dd4cd320">sincos</a>);
+<a name="l00604"></a>00604 
+<a name="l00610"></a>00610 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a>(<span class="keywordtype">float</span>);
+<a name="l00611"></a>00611 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a>)
+<a name="l00612"></a>00612 
+<a name="l00618"></a>00618 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4fe4fef049786e888526d6f37b912b0a">sinpi</a>(<span class="keywordtype">float</span> v);
+<a name="l00619"></a>00619 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a4fe4fef049786e888526d6f37b912b0a">sinpi</a>)
+<a name="l00620"></a>00620 
+<a name="l00627"></a>00627 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a>(<span class="keywordtype">float</span> v);
+<a name="l00628"></a>00628 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a>)
+<a name="l00629"></a>00629 
+<a name="l00636"></a>00636 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a>(<span class="keywordtype">float</span>);
+<a name="l00637"></a>00637 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a>)
+<a name="l00638"></a>00638 
+<a name="l00644"></a>00644 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad8bfb083dd3979a305e594a0d6e581c4">tanpi</a>(<span class="keywordtype">float</span> v);
+<a name="l00645"></a>00645 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ad8bfb083dd3979a305e594a0d6e581c4">tanpi</a>)
+<a name="l00646"></a>00646 
+<a name="l00652"></a>00652 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a>(<span class="keywordtype">float</span>);
+<a name="l00653"></a>00653 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a>)
+<a name="l00654"></a>00654 
+<a name="l00660"></a>00660 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a>(<span class="keywordtype">float</span>);
+<a name="l00661"></a>00661 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a>)
+<a name="l00662"></a>00662 
+<a name="l00663"></a>00663 
+<a name="l00664"></a>00664 <span class="preprocessor">#define XN_FUNC_YN(typeout, fnc, typein)                                \</span>
+<a name="l00665"></a>00665 <span class="preprocessor">extern typeout __attribute__((overloadable)) fnc(typein);               \</span>
+<a name="l00666"></a>00666 <span class="preprocessor">_RS_RUNTIME typeout##2 __attribute__((overloadable)) fnc(typein##2 v);   \</span>
+<a name="l00667"></a>00667 <span class="preprocessor">_RS_RUNTIME typeout##3 __attribute__((overloadable)) fnc(typein##3 v);   \</span>
+<a name="l00668"></a>00668 <span class="preprocessor">_RS_RUNTIME typeout##4 __attribute__((overloadable)) fnc(typein##4 v);</span>
+<a name="l00669"></a>00669 <span class="preprocessor"></span>
+<a name="l00670"></a>00670 <span class="preprocessor">#define UIN_FUNC_IN(fnc)          \</span>
+<a name="l00671"></a>00671 <span class="preprocessor">XN_FUNC_YN(uchar, fnc, char)      \</span>
+<a name="l00672"></a>00672 <span class="preprocessor">XN_FUNC_YN(ushort, fnc, short)    \</span>
+<a name="l00673"></a>00673 <span class="preprocessor">XN_FUNC_YN(uint, fnc, int)</span>
+<a name="l00674"></a>00674 <span class="preprocessor"></span>
+<a name="l00675"></a>00675 <span class="preprocessor">#define IN_FUNC_IN(fnc)           \</span>
+<a name="l00676"></a>00676 <span class="preprocessor">XN_FUNC_YN(uchar, fnc, uchar)     \</span>
+<a name="l00677"></a>00677 <span class="preprocessor">XN_FUNC_YN(char, fnc, char)       \</span>
+<a name="l00678"></a>00678 <span class="preprocessor">XN_FUNC_YN(ushort, fnc, ushort)   \</span>
+<a name="l00679"></a>00679 <span class="preprocessor">XN_FUNC_YN(short, fnc, short)     \</span>
+<a name="l00680"></a>00680 <span class="preprocessor">XN_FUNC_YN(uint, fnc, uint)       \</span>
+<a name="l00681"></a>00681 <span class="preprocessor">XN_FUNC_YN(int, fnc, int)</span>
+<a name="l00682"></a>00682 <span class="preprocessor"></span>
+<a name="l00683"></a>00683 
+<a name="l00684"></a>00684 <span class="preprocessor">#define XN_FUNC_XN_XN_BODY(type, fnc, body)         \</span>
+<a name="l00685"></a>00685 <span class="preprocessor">_RS_RUNTIME type __attribute__((overloadable))       \</span>
+<a name="l00686"></a>00686 <span class="preprocessor">        fnc(type v1, type v2);                      \</span>
+<a name="l00687"></a>00687 <span class="preprocessor">_RS_RUNTIME type##2 __attribute__((overloadable))    \</span>
+<a name="l00688"></a>00688 <span class="preprocessor">        fnc(type##2 v1, type##2 v2);                \</span>
+<a name="l00689"></a>00689 <span class="preprocessor">_RS_RUNTIME type##3 __attribute__((overloadable))    \</span>
+<a name="l00690"></a>00690 <span class="preprocessor">        fnc(type##3 v1, type##3 v2);                \</span>
+<a name="l00691"></a>00691 <span class="preprocessor">_RS_RUNTIME type##4 __attribute__((overloadable))    \</span>
+<a name="l00692"></a>00692 <span class="preprocessor">        fnc(type##4 v1, type##4 v2);</span>
+<a name="l00693"></a>00693 <span class="preprocessor"></span>
+<a name="l00694"></a>00694 <span class="preprocessor">#define IN_FUNC_IN_IN_BODY(fnc, body) \</span>
+<a name="l00695"></a>00695 <span class="preprocessor">XN_FUNC_XN_XN_BODY(uchar, fnc, body)  \</span>
+<a name="l00696"></a>00696 <span class="preprocessor">XN_FUNC_XN_XN_BODY(char, fnc, body)   \</span>
+<a name="l00697"></a>00697 <span class="preprocessor">XN_FUNC_XN_XN_BODY(ushort, fnc, body) \</span>
+<a name="l00698"></a>00698 <span class="preprocessor">XN_FUNC_XN_XN_BODY(short, fnc, body)  \</span>
+<a name="l00699"></a>00699 <span class="preprocessor">XN_FUNC_XN_XN_BODY(uint, fnc, body)   \</span>
+<a name="l00700"></a>00700 <span class="preprocessor">XN_FUNC_XN_XN_BODY(int, fnc, body)    \</span>
+<a name="l00701"></a>00701 <span class="preprocessor">XN_FUNC_XN_XN_BODY(float, fnc, body)</span>
+<a name="l00702"></a>00702 <span class="preprocessor"></span>
+<a name="l00703"></a>00703 UIN_FUNC_IN(abs)
+<a name="l00704"></a>00704 IN_FUNC_IN(clz)
+<a name="l00705"></a>00705 
+<a name="l00711"></a>00711 IN_FUNC_IN_IN_BODY(min, (v1 &lt; v2 ? v1 : v2))
+<a name="l00712"></a>00712 FN_FUNC_FN_F(min)
+<a name="l00713"></a>00713 
+<a name="l00719"></a>00719 IN_FUNC_IN_IN_BODY(max, (v1 &gt; v2 ? v1 : v2))
+<a name="l00720"></a>00720 FN_FUNC_FN_F(max)
+<a name="l00721"></a>00721 
+<a name="l00729"></a>00729 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<span class="keywordtype">float</span> amount, <span class="keywordtype">float</span> low, <span class="keywordtype">float</span> high);
+<a name="l00730"></a>00730 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> amount, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> low, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> high);
+<a name="l00731"></a>00731 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> amount, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> low, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> high);
+<a name="l00732"></a>00732 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> amount, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> low, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> high);
+<a name="l00733"></a>00733 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> amount, <span class="keywordtype">float</span> low, <span class="keywordtype">float</span> high);
+<a name="l00734"></a>00734 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> amount, <span class="keywordtype">float</span> low, <span class="keywordtype">float</span> high);
+<a name="l00735"></a>00735 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad4dab580aba6cf15539b407b9163dfde">clamp</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> amount, <span class="keywordtype">float</span> low, <span class="keywordtype">float</span> high);
+<a name="l00736"></a>00736 
+<a name="l00742"></a>00742 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">degrees</a>(<span class="keywordtype">float</span> <a class="code" href="rs__cl_8rsh.html#aaef2526c4d190ba6f7301b4e810917a7">radians</a>);
+<a name="l00743"></a>00743 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">degrees</a>)
+<a name="l00744"></a>00744 
+<a name="l00750"></a>00750 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<span class="keywordtype">float</span> start, <span class="keywordtype">float</span> stop, <span class="keywordtype">float</span> amount);
+<a name="l00751"></a>00751 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> start, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> stop, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> amount);
+<a name="l00752"></a>00752 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> start, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> stop, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> amount);
+<a name="l00753"></a>00753 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> start, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> stop, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> amount);
+<a name="l00754"></a>00754 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> start, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> stop, <span class="keywordtype">float</span> amount);
+<a name="l00755"></a>00755 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> start, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> stop, <span class="keywordtype">float</span> amount);
+<a name="l00756"></a>00756 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af4c76d51368c8e330cb59ea5a0a2310e">mix</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> start, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> stop, <span class="keywordtype">float</span> amount);
+<a name="l00757"></a>00757 
+<a name="l00763"></a>00763 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) radians(<span class="keywordtype">float</span> <a class="code" href="rs__cl_8rsh.html#adc1b551193e66d8037daa1721df4d29c">degrees</a>);
+<a name="l00764"></a>00764 FN_FUNC_FN(radians)
+<a name="l00765"></a>00765 
+<a name="l00774"></a>00774 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<span class="keywordtype">float</span> edge, <span class="keywordtype">float</span> v);
+<a name="l00775"></a>00775 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> edge, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> v);
+<a name="l00776"></a>00776 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> edge, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> v);
+<a name="l00777"></a>00777 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> edge, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> v);
+<a name="l00778"></a>00778 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> edge, <span class="keywordtype">float</span> v);
+<a name="l00779"></a>00779 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> edge, <span class="keywordtype">float</span> v);
+<a name="l00780"></a>00780 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f7ba6882099d16853d0415982121900">step</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> edge, <span class="keywordtype">float</span> v);
+<a name="l00781"></a>00781 
+<a name="l00782"></a>00782 <span class="comment">// not implemented</span>
+<a name="l00783"></a>00783 extern <span class="keywordtype">float</span> __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
+<a name="l00784"></a>00784 extern <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>, float2, float2);
+<a name="l00785"></a>00785 extern <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>, float3, float3);
+<a name="l00786"></a>00786 extern <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>, float4, float4);
+<a name="l00787"></a>00787 extern float2 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float2);
+<a name="l00788"></a>00788 extern float3 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float3);
+<a name="l00789"></a>00789 extern float4 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float4);
+<a name="l00790"></a>00790 
+<a name="l00798"></a>00798 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3e6d477a06dec7070f073eec9d8f420c">sign</a>(<span class="keywordtype">float</span> v);
+<a name="l00799"></a>00799 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3e6d477a06dec7070f073eec9d8f420c">sign</a>)
+<a name="l00800"></a>00800 
+<a name="l00806"></a>00806 _RS_RUNTIME float3 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a0f7beb26bb4aa30535babd14492a7e90">cross</a>(float3 lhs, float3 rhs);
+<a name="l00807"></a>00807 _RS_RUNTIME float4 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a0f7beb26bb4aa30535babd14492a7e90">cross</a>(float4 lhs, float4 rhs);
+<a name="l00808"></a>00808 
+<a name="l00814"></a>00814 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(<span class="keywordtype">float</span> lhs, <span class="keywordtype">float</span> rhs);
+<a name="l00815"></a>00815 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(float2 lhs, float2 rhs);
+<a name="l00816"></a>00816 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(float3 lhs, float3 rhs);
+<a name="l00817"></a>00817 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(float4 lhs, float4 rhs);
+<a name="l00818"></a>00818 
+<a name="l00824"></a>00824 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(<span class="keywordtype">float</span> v);
+<a name="l00825"></a>00825 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(float2 v);
+<a name="l00826"></a>00826 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(float3 v);
+<a name="l00827"></a>00827 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(float4 v);
+<a name="l00828"></a>00828 
+<a name="l00834"></a>00834 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">distance</a>(<span class="keywordtype">float</span> lhs, <span class="keywordtype">float</span> rhs);
+<a name="l00835"></a>00835 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">distance</a>(float2 lhs, float2 rhs);
+<a name="l00836"></a>00836 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">distance</a>(float3 lhs, float3 rhs);
+<a name="l00837"></a>00837 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4488863373be92e113e9d24aa3d21e76">distance</a>(float4 lhs, float4 rhs);
+<a name="l00838"></a>00838 
+<a name="l00844"></a>00844 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">normalize</a>(<span class="keywordtype">float</span> v);
+<a name="l00845"></a>00845 _RS_RUNTIME float2 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">normalize</a>(float2 v);
+<a name="l00846"></a>00846 _RS_RUNTIME float3 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">normalize</a>(float3 v);
+<a name="l00847"></a>00847 _RS_RUNTIME float4 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a373e03e92a1b7f3fdea5ca4ca159d2a8">normalize</a>(float4 v);
+<a name="l00848"></a>00848 
+<a name="l00849"></a>00849 <span class="preprocessor">#undef CVT_FUNC</span>
+<a name="l00850"></a>00850 <span class="preprocessor"></span><span class="preprocessor">#undef CVT_FUNC_2</span>
+<a name="l00851"></a>00851 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN</span>
+<a name="l00852"></a>00852 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_FN</span>
+<a name="l00853"></a>00853 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN</span>
+<a name="l00854"></a>00854 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_F</span>
+<a name="l00855"></a>00855 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_IN</span>
+<a name="l00856"></a>00856 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_I</span>
+<a name="l00857"></a>00857 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_PFN</span>
+<a name="l00858"></a>00858 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_PIN</span>
+<a name="l00859"></a>00859 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN_FN</span>
+<a name="l00860"></a>00860 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN_PIN</span>
+<a name="l00861"></a>00861 <span class="preprocessor"></span><span class="preprocessor">#undef XN_FUNC_YN</span>
+<a name="l00862"></a>00862 <span class="preprocessor"></span><span class="preprocessor">#undef UIN_FUNC_IN</span>
+<a name="l00863"></a>00863 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_IN</span>
+<a name="l00864"></a>00864 <span class="preprocessor"></span><span class="preprocessor">#undef XN_FUNC_XN_XN_BODY</span>
+<a name="l00865"></a>00865 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_IN_IN_BODY</span>
+<a name="l00866"></a>00866 <span class="preprocessor"></span>
+<a name="l00867"></a>00867 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__core_8rsh.html b/docs/html/reference/renderscript/rs__core_8rsh.html
new file mode 100644
index 0000000..5a32e19
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__core_8rsh.html
@@ -0,0 +1,306 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__allocation_8rsh_source.html">rs_allocation.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__atomic_8rsh_source.html">rs_atomic.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__debug_8rsh_source.html">rs_debug.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__object_8rsh_source.html">rs_object.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>&quot;</code><br/>
+</div><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__script__call.html">rs_script_call</a></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structrs__script__call.html">rs_script_call</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a></td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> </td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a> (int cmdID)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rsSendToClient</a> (int cmdID, const void *data, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a> (int cmdID)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#afc93b00be08f58512a6ab6a87feb9515">rsSendToClientBlocking</a> (int cmdID, const void *data, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output, const void *usrData, const <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a> *sc)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae62dc9d507e0e62c064217c71cc94101">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output, const void *usrData)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>todo-jsams </p>
+
+<p>Definition in file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
+</div><hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="ae8756b32e23445f287960b9d0ffb449c"></a><!-- doxytag: member="rs_core.rsh::rs_script_call_t" ref="ae8756b32e23445f287960b9d0ffb449c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structrs__script__call.html">rs_script_call</a>  <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Structure to provide extra information to a rsForEach call. Primarly used to restrict the call to a subset of cells in the allocation. </p>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="ae1755c901e8acb42510ad10b4e104746"></a><!-- doxytag: member="rs_core.rsh::rs_for_each_strategy" ref="ae1755c901e8acb42510ad10b4e104746" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Launch order hint for rsForEach calls. This provides a hint to the system to determine in which order the root function of the target is called with each cell of the allocation.</p>
+<p>This is a hint and implementations may not obey the order. </p>
+
+<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00074">74</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a95ebbf7a8923193df144649c066daae6"></a><!-- doxytag: member="rs_core.rsh::rsForEach" ref="a95ebbf7a8923193df144649c066daae6" args="(rs_script script, rs_allocation input, rs_allocation output, const void *usrData, const rs_script_call_t *sc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsForEach </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
+          <td class="paramname"><em>script</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>input</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>output</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>usrData</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a> *&#160;</td>
+          <td class="paramname"><em>sc</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Make a script to script call to launch work. One of the input or output is required to be a valid object. The input and output must be of the same dimensions. API 10-13</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">script</td><td>The target script to call </td></tr>
+    <tr><td class="paramname">input</td><td>The allocation to source data from </td></tr>
+    <tr><td class="paramname">output</td><td>the allocation to write date into </td></tr>
+    <tr><td class="paramname">usrData</td><td>The user definied params to pass to the root script. May be NULL. </td></tr>
+    <tr><td class="paramname">sc</td><td>Extra control infomation used to select a sub-region of the allocation to be processed or suggest a walking strategy. May be NULL. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae62dc9d507e0e62c064217c71cc94101"></a><!-- doxytag: member="rs_core.rsh::rsForEach" ref="ae62dc9d507e0e62c064217c71cc94101" args="(rs_script script, rs_allocation input, rs_allocation output, const void *usrData)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsForEach </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
+          <td class="paramname"><em>script</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>input</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>output</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>usrData</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a91cfbca99f87ef144bea2cdf1e8473ca"></a><!-- doxytag: member="rs_core.rsh::rsSendToClient" ref="a91cfbca99f87ef144bea2cdf1e8473ca" args="(int cmdID)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsSendToClient </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>cmdID</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Send a message back to the client. Will not block and returns true if the message was sendable and false if the fifo was full. A message ID is required. Data payload is optional. </p>
+
+</div>
+</div>
+<a class="anchor" id="a508003cadad2d37d41e2de7e9226f859"></a><!-- doxytag: member="rs_core.rsh::rsSendToClient" ref="a508003cadad2d37d41e2de7e9226f859" args="(int cmdID, const void *data, uint len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsSendToClient </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>cmdID</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>len</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6e4ff6388e8c6978ed17447214f2a2e2"></a><!-- doxytag: member="rs_core.rsh::rsSendToClientBlocking" ref="a6e4ff6388e8c6978ed17447214f2a2e2" args="(int cmdID)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSendToClientBlocking </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>cmdID</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Send a message back to the client, blocking until the message is queued. A message ID is required. Data payload is optional. </p>
+
+</div>
+</div>
+<a class="anchor" id="afc93b00be08f58512a6ab6a87feb9515"></a><!-- doxytag: member="rs_core.rsh::rsSendToClientBlocking" ref="afc93b00be08f58512a6ab6a87feb9515" args="(int cmdID, const void *data, uint len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSendToClientBlocking </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>cmdID</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>len</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__core_8rsh_source.html b/docs/html/reference/renderscript/rs__core_8rsh_source.html
new file mode 100644
index 0000000..fac83e0
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__core_8rsh_source.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_core.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__core_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_CORE_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CORE_RSH__</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#define _RS_RUNTIME extern</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include &quot;<a class="code" href="rs__types_8rsh.html">rs_types.rsh</a>&quot;</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;<a class="code" href="rs__allocation_8rsh.html" title="Allocation routines.">rs_allocation.rsh</a>&quot;</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include &quot;<a class="code" href="rs__atomic_8rsh.html" title="Atomic routines.">rs_atomic.rsh</a>&quot;</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;<a class="code" href="rs__cl_8rsh.html" title="Basic math functions.">rs_cl.rsh</a>&quot;</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include &quot;<a class="code" href="rs__debug_8rsh.html" title="Utility debugging routines.">rs_debug.rsh</a>&quot;</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include &quot;<a class="code" href="rs__math_8rsh.html">rs_math.rsh</a>&quot;</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include &quot;<a class="code" href="rs__matrix_8rsh.html" title="Matrix routines.">rs_matrix.rsh</a>&quot;</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include &quot;<a class="code" href="rs__object_8rsh.html" title="Object routines.">rs_object.rsh</a>&quot;</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include &quot;<a class="code" href="rs__quaternion_8rsh.html" title="Quaternion routines.">rs_quaternion.rsh</a>&quot;</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include &quot;<a class="code" href="rs__time_8rsh.html" title="Renderscript time routines.">rs_time.rsh</a>&quot;</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 
+<a name="l00047"></a>00047 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00048"></a>00048     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID);
+<a name="l00052"></a>00052 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00053"></a>00053     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
+<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00059"></a>00059     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID);
+<a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00064"></a>00064     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 
+<a name="l00074"></a><a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">00074</a> enum <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> {
+<a name="l00075"></a>00075     RS_FOR_EACH_STRATEGY_SERIAL,
+<a name="l00076"></a>00076     RS_FOR_EACH_STRATEGY_DONT_CARE,
+<a name="l00077"></a>00077     RS_FOR_EACH_STRATEGY_DST_LINEAR,
+<a name="l00078"></a>00078     RS_FOR_EACH_STRATEGY_TILE_SMALL,
+<a name="l00079"></a>00079     RS_FOR_EACH_STRATEGY_TILE_MEDIUM,
+<a name="l00080"></a>00080     RS_FOR_EACH_STRATEGY_TILE_LARGE
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 
+<a name="l00088"></a><a class="code" href="structrs__script__call.html">00088</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrs__script__call.html">rs_script_call</a> {
+<a name="l00089"></a>00089     <span class="keyword">enum</span> <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> strategy;
+<a name="l00090"></a>00090     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xStart;
+<a name="l00091"></a>00091     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xEnd;
+<a name="l00092"></a>00092     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yStart;
+<a name="l00093"></a>00093     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yEnd;
+<a name="l00094"></a>00094     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zStart;
+<a name="l00095"></a>00095     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zEnd;
+<a name="l00096"></a>00096     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayStart;
+<a name="l00097"></a>00097     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayEnd;
+<a name="l00098"></a>00098 } <a class="code" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a>;
+<a name="l00099"></a>00099 
+<a name="l00116"></a>00116 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00118"></a>00118     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
+<a name="l00119"></a>00119               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData,
+<a name="l00120"></a>00120               const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *sc);
+<a name="l00124"></a>00124 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00125"></a>00125     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input,
+<a name="l00126"></a>00126               <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData);
+<a name="l00127"></a>00127 <span class="preprocessor">#else</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span>
+<a name="l00147"></a>00147 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00148"></a>00148     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
+<a name="l00149"></a>00149               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen, const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *);
+<a name="l00153"></a>00153 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00154"></a>00154     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output,
+<a name="l00155"></a>00155               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen);
+<a name="l00159"></a>00159 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00160"></a>00160     <a class="code" href="rs__core_8rsh.html#a95ebbf7a8923193df144649c066daae6">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> output);
+<a name="l00161"></a>00161 <span class="preprocessor">#endif</span>
+<a name="l00162"></a>00162 <span class="preprocessor"></span>
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165 <span class="preprocessor">#undef _RS_RUNTIME</span>
+<a name="l00166"></a>00166 <span class="preprocessor"></span>
+<a name="l00167"></a>00167 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh.html b/docs/html/reference/renderscript/rs__debug_8rsh.html
new file mode 100644
index 0000000..75ce9db
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__debug_8rsh.html
@@ -0,0 +1,459 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a> (const char *, float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aebd4d3e687a397db1a817ca6d46aed29">rsDebug</a> (const char *, float, float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ab1731408774f01186aff59b89c47fe32">rsDebug</a> (const char *, float, float, float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a6bb20c16c9fcc613158ca8c6f0dd81bd">rsDebug</a> (const char *, float, float, float, float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a0a59285be7204bde7b199c77578b6a42">rsDebug</a> (const char *, double)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a47b07360e1df6885b3f2eb207408db2c">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aee885d367bb22f5c437dec486eafb75c">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ac611c53b945b0ced90fde98e3846be79">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ad8f8901db11563ddd7d655fed025047f">rsDebug</a> (const char *, int)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a490b0f6af3cc2e0280e97f2d2c2da228">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aa75aa9faf7646ceeafeb19279416e9e8">rsDebug</a> (const char *, long)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aa371f42b8d323a1a20d56461011fc664">rsDebug</a> (const char *, unsigned long)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ab5a58069a9d914e413f52b0f9bd62a00">rsDebug</a> (const char *, const void *)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Utility debugging routines. </p>
+<p>Routines intended to be used during application developement. These should not be used in shipping applications. All print a string and value pair to the standard log. </p>
+
+<p>Definition in file <a class="el" href="rs__debug_8rsh_source.html">rs_debug.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a9a86fd617111dee78b3179a293afb66c"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a9a86fd617111dee78b3179a293afb66c" args="(const char *, float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="aebd4d3e687a397db1a817ca6d46aed29"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aebd4d3e687a397db1a817ca6d46aed29" args="(const char *, float, float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab1731408774f01186aff59b89c47fe32"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ab1731408774f01186aff59b89c47fe32" args="(const char *, float, float, float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6bb20c16c9fcc613158ca8c6f0dd81bd"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a6bb20c16c9fcc613158ca8c6f0dd81bd" args="(const char *, float, float, float, float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0a59285be7204bde7b199c77578b6a42"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a0a59285be7204bde7b199c77578b6a42" args="(const char *, double)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="a47b07360e1df6885b3f2eb207408db2c"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a47b07360e1df6885b3f2eb207408db2c" args="(const char *, const rs_matrix4x4 *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="aee885d367bb22f5c437dec486eafb75c"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aee885d367bb22f5c437dec486eafb75c" args="(const char *, const rs_matrix3x3 *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac611c53b945b0ced90fde98e3846be79"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ac611c53b945b0ced90fde98e3846be79" args="(const char *, const rs_matrix2x2 *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad8f8901db11563ddd7d655fed025047f"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ad8f8901db11563ddd7d655fed025047f" args="(const char *, int)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="a490b0f6af3cc2e0280e97f2d2c2da228"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a490b0f6af3cc2e0280e97f2d2c2da228" args="(const char *, uint)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa75aa9faf7646ceeafeb19279416e9e8"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aa75aa9faf7646ceeafeb19279416e9e8" args="(const char *, long)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa371f42b8d323a1a20d56461011fc664"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aa371f42b8d323a1a20d56461011fc664" args="(const char *, unsigned long)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned&#160;</td>
+          <td class="paramname"><em>long</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab5a58069a9d914e413f52b0f9bd62a00"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ab5a58069a9d914e413f52b0f9bd62a00" args="(const char *, const void *)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsDebug </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void *&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debug function. Prints a string and value to the log. </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh_source.html b/docs/html/reference/renderscript/rs__debug_8rsh_source.html
new file mode 100644
index 0000000..b06e99c
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__debug_8rsh_source.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_debug.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__debug_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00026"></a>00026 <span class="preprocessor">#ifndef __RS_DEBUG_RSH__</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __RS_DEBUG_RSH__</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 
+<a name="l00034"></a>00034 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00035"></a>00035     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>);
+<a name="l00039"></a>00039 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00040"></a>00040     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
+<a name="l00044"></a>00044 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00045"></a>00045     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
+<a name="l00049"></a>00049 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00050"></a>00050     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
+<a name="l00054"></a>00054 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00055"></a>00055     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">double</span>);
+<a name="l00059"></a>00059 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00060"></a>00060     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *);
+<a name="l00064"></a>00064 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00065"></a>00065     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *);
+<a name="l00069"></a>00069 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00070"></a>00070     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *);
+<a name="l00074"></a>00074 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00075"></a>00075     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span>);
+<a name="l00079"></a>00079 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00080"></a>00080     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>);
+<a name="l00084"></a>00084 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00085"></a>00085     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">long</span>);
+<a name="l00089"></a>00089 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00090"></a>00090     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>);
+<a name="l00094"></a>00094 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00095"></a>00095     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">long</span> <span class="keywordtype">long</span>);
+<a name="l00099"></a>00099 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00100"></a>00100     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>);
+<a name="l00104"></a>00104 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00105"></a>00105     <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *, const <span class="keywordtype">void</span> *);
+<a name="l00106"></a>00106 <span class="preprocessor">#define RS_DEBUG(a) rsDebug(#a, a)</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__)</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>
+<a name="l00109"></a>00109 
+<a name="l00113"></a>00113 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *s, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> v);
+<a name="l00117"></a>00117 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *s, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> v);
+<a name="l00121"></a>00121 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__debug_8rsh.html#a9a86fd617111dee78b3179a293afb66c">rsDebug</a>(const <span class="keywordtype">char</span> *s, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> v);
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh.html b/docs/html/reference/renderscript/rs__graphics_8rsh.html
new file mode 100644
index 0000000..8a17b30
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__graphics_8rsh.html
@@ -0,0 +1,1347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> pv)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> pr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__sampler.html">rs_sampler</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *proj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *model)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *tex)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *proj)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf, float r, float g, float b, float a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> alloc)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a> (float x1, float y1, float x2, float y2, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a> (float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a> (float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a> (float x, float y, float z, float w, float h)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a621abfc693fed028b5dc74826453142d">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ab2704a6d16e3d7983524d0a8413c1b8a">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a> (float r, float g, float b, float a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a> (float value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a> (const char *, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ac5e84fd253b4b1d2b0e11a7a0a7df945">rsgDrawText</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a> (<a class="el" href="structrs__font.html">rs_font</a> font)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a> (float r, float g, float b, float a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a> (const char *, int *left, int *right, int *top, int *bottom)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a2abb920283b1dafa9059de488143a870">rsgMeasureText</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, int *left, int *right, int *top, int *bottom)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> mesh, float *minX, float *minY, float *minZ, float *maxX, float *maxY, float *maxZ)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static __inline__ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">rsgMeshComputeBoundingBox</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> mesh, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Renderscript graphics API. </p>
+<p>A set of graphics functions used by Renderscript. </p>
+
+<p>Definition in file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a647228d8e15da6ad67a97701d920dcac"></a><!-- doxytag: member="rs_graphics.rsh::rsgAllocationSyncAll" ref="a647228d8e15da6ad67a97701d920dcac" args="(rs_allocation alloc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgAllocationSyncAll </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>alloc</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sync the contents of an allocation from its SCRIPT memory space to its HW memory spaces.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">alloc</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae89effef281e92e2940055883ea366d4"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindFont" ref="ae89effef281e92e2940055883ea366d4" args="(rs_font font)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindFont </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
+          <td class="paramname"><em>font</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Binds the font object to be used for all subsequent font rendering calls </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">font</td><td>object to bind </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9f8deb600729a83c39c5bcaba2152b9c"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramFragment" ref="a9f8deb600729a83c39c5bcaba2152b9c" args="(rs_program_fragment pf)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindProgramFragment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname"><em>pf</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new ProgramFragment to the rendering context.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pf</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a391eb5535544f6312c724b910da6ec35"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramRaster" ref="a391eb5535544f6312c724b910da6ec35" args="(rs_program_raster pr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindProgramRaster </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
+          <td class="paramname"><em>pr</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new ProgramRaster to the rendering context.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pr</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a34dfa6eddd7454fc1865222c5a022315"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramStore" ref="a34dfa6eddd7454fc1865222c5a022315" args="(rs_program_store ps)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindProgramStore </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
+          <td class="paramname"><em>ps</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new ProgramStore to the rendering context.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ps</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a894e26d0d05d3ef99be65ddf98dd901c"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramVertex" ref="a894e26d0d05d3ef99be65ddf98dd901c" args="(rs_program_vertex pv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindProgramVertex </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
+          <td class="paramname"><em>pv</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new ProgramVertex to the rendering context.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pv</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4ade6c5acbf6acaa1c29a1aecc6e87d3"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindSampler" ref="a4ade6c5acbf6acaa1c29a1aecc6e87d3" args="(rs_program_fragment, uint slot, rs_sampler)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindSampler </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>slot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new Sampler object to a ProgramFragment. The sampler will operate on the texture bound at the matching slot.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">slot</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1694eb5489bd3a444da921dbf16aeeb5"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindTexture" ref="a1694eb5489bd3a444da921dbf16aeeb5" args="(rs_program_fragment, uint slot, rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgBindTexture </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>slot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Bind a new Allocation object to a ProgramFragment. The Allocation must be a valid texture for the Program. The sampling of the texture will be controled by the Sampler bound at the matching slot.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">slot</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a147674fed92745fbb5c64a6300ca3c49"></a><!-- doxytag: member="rs_graphics.rsh::rsgClearColor" ref="a147674fed92745fbb5c64a6300ca3c49" args="(float r, float g, float b, float a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgClearColor </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Clears the rendering surface to the specified color.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">r</td><td></td></tr>
+    <tr><td class="paramname">g</td><td></td></tr>
+    <tr><td class="paramname">b</td><td></td></tr>
+    <tr><td class="paramname">a</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4bedb06e8facd587e3eacd746fe3e727"></a><!-- doxytag: member="rs_graphics.rsh::rsgClearDepth" ref="a4bedb06e8facd587e3eacd746fe3e727" args="(float value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgClearDepth </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>value</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Clears the depth suface to the specified value. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6f8b87c994810908fbe5e01f8f63f9af"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="a6f8b87c994810908fbe5e01f8f63f9af" args="(rs_mesh ism)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawMesh </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>ism</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Draw a mesh using the current context state. The whole mesh is rendered.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ism</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a621abfc693fed028b5dc74826453142d"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="a621abfc693fed028b5dc74826453142d" args="(rs_mesh ism, uint primitiveIndex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawMesh </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>ism</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>primitiveIndex</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Draw part of a mesh using the current context state. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ism</td><td>mesh object to render </td></tr>
+    <tr><td class="paramname">primitiveIndex</td><td>for meshes that contain multiple primitive groups this parameter specifies the index of the group to draw. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab2704a6d16e3d7983524d0a8413c1b8a"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="ab2704a6d16e3d7983524d0a8413c1b8a" args="(rs_mesh ism, uint primitiveIndex, uint start, uint len)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawMesh </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>ism</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>primitiveIndex</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>start</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>len</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Draw specified index range of part of a mesh using the current context state. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ism</td><td>mesh object to render </td></tr>
+    <tr><td class="paramname">primitiveIndex</td><td>for meshes that contain multiple primitive groups this parameter specifies the index of the group to draw. </td></tr>
+    <tr><td class="paramname">start</td><td>starting index in the range </td></tr>
+    <tr><td class="paramname">len</td><td>number of indices to draw </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad6953da0349e58547b08b8ce174ed3fc"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawQuad" ref="ad6953da0349e58547b08b8ce174ed3fc" args="(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawQuad </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z4</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Low performance utility function for drawing a simple quad. Not intended for drawing large quantities of geometry.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x1</td><td></td></tr>
+    <tr><td class="paramname">y1</td><td></td></tr>
+    <tr><td class="paramname">z1</td><td></td></tr>
+    <tr><td class="paramname">x2</td><td></td></tr>
+    <tr><td class="paramname">y2</td><td></td></tr>
+    <tr><td class="paramname">z2</td><td></td></tr>
+    <tr><td class="paramname">x3</td><td></td></tr>
+    <tr><td class="paramname">y3</td><td></td></tr>
+    <tr><td class="paramname">z3</td><td></td></tr>
+    <tr><td class="paramname">x4</td><td></td></tr>
+    <tr><td class="paramname">y4</td><td></td></tr>
+    <tr><td class="paramname">z4</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afb98a59bb9f878f0a09459567c269e64"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawQuadTexCoords" ref="afb98a59bb9f878f0a09459567c269e64" args="(float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawQuadTexCoords </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>u1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>u2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>u3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v3</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>u4</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v4</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Low performance utility function for drawing a textured quad. Not intended for drawing large quantities of geometry.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x1</td><td></td></tr>
+    <tr><td class="paramname">y1</td><td></td></tr>
+    <tr><td class="paramname">z1</td><td></td></tr>
+    <tr><td class="paramname">u1</td><td></td></tr>
+    <tr><td class="paramname">v1</td><td></td></tr>
+    <tr><td class="paramname">x2</td><td></td></tr>
+    <tr><td class="paramname">y2</td><td></td></tr>
+    <tr><td class="paramname">z2</td><td></td></tr>
+    <tr><td class="paramname">u2</td><td></td></tr>
+    <tr><td class="paramname">v2</td><td></td></tr>
+    <tr><td class="paramname">x3</td><td></td></tr>
+    <tr><td class="paramname">y3</td><td></td></tr>
+    <tr><td class="paramname">z3</td><td></td></tr>
+    <tr><td class="paramname">u3</td><td></td></tr>
+    <tr><td class="paramname">v3</td><td></td></tr>
+    <tr><td class="paramname">x4</td><td></td></tr>
+    <tr><td class="paramname">y4</td><td></td></tr>
+    <tr><td class="paramname">z4</td><td></td></tr>
+    <tr><td class="paramname">u4</td><td></td></tr>
+    <tr><td class="paramname">v4</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a80c51849bf12ec6c699c23c3fa3e6208"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawRect" ref="a80c51849bf12ec6c699c23c3fa3e6208" args="(float x1, float y1, float x2, float y2, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawRect </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y2</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Low performance utility function for drawing a simple rectangle. Not intended for drawing large quantities of geometry.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x1</td><td></td></tr>
+    <tr><td class="paramname">y1</td><td></td></tr>
+    <tr><td class="paramname">x2</td><td></td></tr>
+    <tr><td class="paramname">y2</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a07d15127330fa1dff6c99b0d7d14e65e"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawSpriteScreenspace" ref="a07d15127330fa1dff6c99b0d7d14e65e" args="(float x, float y, float z, float w, float h)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawSpriteScreenspace </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>w</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>h</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Low performance function for drawing rectangles in screenspace. This function uses the default passthough ProgramVertex. Any bound ProgramVertex is ignored. This function has considerable overhead and should not be used for drawing in shipping applications.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+    <tr><td class="paramname">w</td><td></td></tr>
+    <tr><td class="paramname">h</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afaec82492762e62cad1ff53ada479b14"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawText" ref="afaec82492762e62cad1ff53ada479b14" args="(const char *, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawText </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Draws text given a string and location </p>
+
+</div>
+</div>
+<a class="anchor" id="ac5e84fd253b4b1d2b0e11a7a0a7df945"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawText" ref="ac5e84fd253b4b1d2b0e11a7a0a7df945" args="(rs_allocation, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgDrawText </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>y</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="abda8c344092ed6310c7a8f353a6df876"></a><!-- doxytag: member="rs_graphics.rsh::rsgFontColor" ref="abda8c344092ed6310c7a8f353a6df876" args="(float r, float g, float b, float a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgFontColor </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sets the font color for all subsequent rendering calls </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">r</td><td>red component </td></tr>
+    <tr><td class="paramname">g</td><td>green component </td></tr>
+    <tr><td class="paramname">b</td><td>blue component </td></tr>
+    <tr><td class="paramname">a</td><td>alpha component </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7e6565cd5d5e44f442a8bf8ba68f4681"></a><!-- doxytag: member="rs_graphics.rsh::rsgGetHeight" ref="a7e6565cd5d5e44f442a8bf8ba68f4681" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsgGetHeight </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the height of the current rendering surface.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a67f4ed1ca4bba27d5c952ada89cd0717"></a><!-- doxytag: member="rs_graphics.rsh::rsgGetWidth" ref="a67f4ed1ca4bba27d5c952ada89cd0717" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsgGetWidth </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the width of the current rendering surface.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uint </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a5c599f4ea989f3d0616cbf8e983688c4"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeasureText" ref="a5c599f4ea989f3d0616cbf8e983688c4" args="(const char *, int *left, int *right, int *top, int *bottom)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgMeasureText </td>
+          <td>(</td>
+          <td class="paramtype">const char *&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>bottom</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the bounding box of the text relative to (0, 0) Any of left, right, top, bottom could be NULL </p>
+
+</div>
+</div>
+<a class="anchor" id="a2abb920283b1dafa9059de488143a870"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeasureText" ref="a2abb920283b1dafa9059de488143a870" args="(rs_allocation, int *left, int *right, int *top, int *bottom)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgMeasureText </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&#160;</td>
+          <td class="paramname"><em>bottom</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0978c54902dd1d60180f8dbb0b781105"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeshComputeBoundingBox" ref="a0978c54902dd1d60180f8dbb0b781105" args="(rs_mesh mesh, float *minX, float *minY, float *minZ, float *maxX, float *maxY, float *maxZ)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgMeshComputeBoundingBox </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>mesh</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>minX</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>minY</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>minZ</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>maxX</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>maxY</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float *&#160;</td>
+          <td class="paramname"><em>maxZ</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Computes an axis aligned bounding box of a mesh object </p>
+
+</div>
+</div>
+<a class="anchor" id="a6058b6b6c8b94f96f03dc8bca6a2090b"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeshComputeBoundingBox" ref="a6058b6b6c8b94f96f03dc8bca6a2090b" args="(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static __inline__ void rsgMeshComputeBoundingBox </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>mesh</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *&#160;</td>
+          <td class="paramname"><em>bBoxMin</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *&#160;</td>
+          <td class="paramname"><em>bBoxMax</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+<p>Definition at line <a class="el" href="rs__graphics_8rsh_source.html#l00380">380</a> of file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35ac8c3759e25047e6a458c15520c887"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramFragmentConstantColor" ref="a35ac8c3759e25047e6a458c15520c887" args="(rs_program_fragment pf, float r, float g, float b, float a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgProgramFragmentConstantColor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname"><em>pf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the constant color for a fixed function emulation program.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">pf</td><td></td></tr>
+    <tr><td class="paramname">r</td><td></td></tr>
+    <tr><td class="paramname">g</td><td></td></tr>
+    <tr><td class="paramname">b</td><td></td></tr>
+    <tr><td class="paramname">a</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2b767d209b36ffcd2e0fc0cf6f4c5706"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexGetProjectionMatrix" ref="a2b767d209b36ffcd2e0fc0cf6f4c5706" args="(rs_matrix4x4 *proj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgProgramVertexGetProjectionMatrix </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>proj</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the projection matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">proj</td><td>matrix to store the current projection matrix into </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a976b8594cccb4b94d7ce520b44d884e3"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadModelMatrix" ref="a976b8594cccb4b94d7ce520b44d884e3" args="(const rs_matrix4x4 *model)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgProgramVertexLoadModelMatrix </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>model</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load the model matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">model</td><td>model matrix </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a83a87d8efa3f26ed3f8fb25e49f29059"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadProjectionMatrix" ref="a83a87d8efa3f26ed3f8fb25e49f29059" args="(const rs_matrix4x4 *proj)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgProgramVertexLoadProjectionMatrix </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>proj</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load the projection matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">proj</td><td>projection matrix </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a377b7b394c4bf0881532b1241d4be168"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadTextureMatrix" ref="a377b7b394c4bf0881532b1241d4be168" args="(const rs_matrix4x4 *tex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsgProgramVertexLoadTextureMatrix </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>tex</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load the texture matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tex</td><td>texture matrix </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh_source.html b/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
new file mode 100644
index 0000000..b9ce0b7
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_graphics.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__graphics_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_GRAPHICS_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_GRAPHICS_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00032"></a>00032     rsgBindColorTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> colorTarget, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
+<a name="l00033"></a>00033 
+<a name="l00038"></a>00038 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00039"></a>00039     rsgClearColorTarget(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
+<a name="l00040"></a>00040 
+<a name="l00045"></a>00045 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00046"></a>00046     rsgBindDepthTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> depthTarget);
+<a name="l00047"></a>00047 
+<a name="l00051"></a>00051 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00052"></a>00052     rsgClearDepthTarget(<span class="keywordtype">void</span>);
+<a name="l00053"></a>00053 
+<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00059"></a>00059     rsgClearAllRenderTargets(<span class="keywordtype">void</span>);
+<a name="l00060"></a>00060 
+<a name="l00064"></a>00064 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00065"></a>00065     rsgFinish(<span class="keywordtype">void</span>);
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00074"></a>00074 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00075"></a>00075     <a class="code" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> pf);
+<a name="l00076"></a>00076 
+<a name="l00082"></a>00082 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00083"></a>00083     <a class="code" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
+<a name="l00084"></a>00084 
+<a name="l00090"></a>00090 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00091"></a>00091     <a class="code" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv);
+<a name="l00092"></a>00092 
+<a name="l00098"></a>00098 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00099"></a>00099     <a class="code" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
+<a name="l00100"></a>00100 
+<a name="l00107"></a>00107 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00108"></a>00108     <a class="code" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
+<a name="l00109"></a>00109 
+<a name="l00118"></a>00118 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00119"></a>00119     <a class="code" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a>(rs_program_fragment, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
+<a name="l00120"></a>00120 
+<a name="l00127"></a>00127 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00128"></a>00128     <a class="code" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
+<a name="l00135"></a>00135 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00136"></a>00136     <a class="code" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *model);
+<a name="l00143"></a>00143 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00144"></a>00144     <a class="code" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *tex);
+<a name="l00151"></a>00151 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00152"></a>00152     <a class="code" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
+<a name="l00153"></a>00153 
+<a name="l00163"></a>00163 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00164"></a>00164     <a class="code" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a>(rs_program_fragment pf, <span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00165"></a>00165 
+<a name="l00171"></a>00171 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00172"></a>00172     <a class="code" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a>(<span class="keywordtype">void</span>);
+<a name="l00173"></a>00173 
+<a name="l00179"></a>00179 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
+<a name="l00180"></a>00180     <a class="code" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a>(<span class="keywordtype">void</span>);
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182 
+<a name="l00189"></a>00189 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00190"></a>00190     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc);
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00193"></a>00193 <span class="preprocessor"></span>
+<a name="l00201"></a>00201 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00202"></a>00202     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc,
+<a name="l00203"></a>00203                          rs_allocation_usage_type source);
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00206"></a>00206 <span class="preprocessor"></span>
+<a name="l00217"></a>00217 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00218"></a>00218     <a class="code" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z);
+<a name="l00219"></a>00219 
+<a name="l00237"></a>00237 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00238"></a>00238     <a class="code" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1,
+<a name="l00239"></a>00239                 <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2,
+<a name="l00240"></a>00240                 <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3,
+<a name="l00241"></a>00241                 <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4);
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243 
+<a name="l00269"></a>00269 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00270"></a>00270     <a class="code" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1, <span class="keywordtype">float</span> u1, <span class="keywordtype">float</span> v1,
+<a name="l00271"></a>00271                          <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2, <span class="keywordtype">float</span> u2, <span class="keywordtype">float</span> v2,
+<a name="l00272"></a>00272                          <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3, <span class="keywordtype">float</span> u3, <span class="keywordtype">float</span> v3,
+<a name="l00273"></a>00273                          <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4, <span class="keywordtype">float</span> u4, <span class="keywordtype">float</span> v4);
+<a name="l00274"></a>00274 
+<a name="l00275"></a>00275 
+<a name="l00288"></a>00288 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00289"></a>00289     <a class="code" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> h);
+<a name="l00290"></a>00290 
+<a name="l00297"></a>00297 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00298"></a>00298     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism);
+<a name="l00305"></a>00305 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00306"></a>00306     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex);
+<a name="l00315"></a>00315 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00316"></a>00316     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
+<a name="l00317"></a>00317 
+<a name="l00326"></a>00326 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00327"></a>00327     <a class="code" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00328"></a>00328 
+<a name="l00332"></a>00332 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00333"></a>00333     <a class="code" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a>(<span class="keywordtype">float</span> value);
+<a name="l00337"></a>00337 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00338"></a>00338     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
+<a name="l00342"></a>00342 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00343"></a>00343     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(rs_allocation, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
+<a name="l00348"></a>00348 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00349"></a>00349     <a class="code" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> font);
+<a name="l00357"></a>00357 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00358"></a>00358     <a class="code" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00363"></a>00363 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00364"></a>00364     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
+<a name="l00368"></a>00368 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00369"></a>00369     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(rs_allocation, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
+<a name="l00373"></a>00373 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00374"></a>00374     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <span class="keywordtype">float</span> *minX, <span class="keywordtype">float</span> *minY, <span class="keywordtype">float</span> *minZ,
+<a name="l00375"></a>00375                                                 <span class="keywordtype">float</span> *maxX, <span class="keywordtype">float</span> *maxY, <span class="keywordtype">float</span> *maxZ);
+<a name="l00379"></a>00379 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
+<a name="l00380"></a><a class="code" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">00380</a> <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax) {
+<a name="l00381"></a>00381     <span class="keywordtype">float</span> x1, y1, z1, x2, y2, z2;
+<a name="l00382"></a>00382     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(mesh, &amp;x1, &amp;y1, &amp;z1, &amp;x2, &amp;y2, &amp;z2);
+<a name="l00383"></a>00383     bBoxMin-&gt;x = x1;
+<a name="l00384"></a>00384     bBoxMin-&gt;y = y1;
+<a name="l00385"></a>00385     bBoxMin-&gt;z = z1;
+<a name="l00386"></a>00386     bBoxMax-&gt;x = x2;
+<a name="l00387"></a>00387     bBoxMax-&gt;y = y2;
+<a name="l00388"></a>00388     bBoxMax-&gt;z = z2;
+<a name="l00389"></a>00389 }
+<a name="l00390"></a>00390 
+<a name="l00391"></a>00391 <span class="preprocessor">#endif</span>
+<a name="l00392"></a>00392 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__math_8rsh.html b/docs/html/reference/renderscript/rs__math_8rsh.html
new file mode 100644
index 0000000..9415c3a
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__math_8rsh.html
@@ -0,0 +1,679 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a> (int max_value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a01edf1cf3cdaecb1629761b69148e189">rsRand</a> (int min_value, int max_value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a03e898d810ac44158e7461b2b2b1c356">rsRand</a> (float max_value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a84b2e7468314873b3aa02969e310d9e4">rsRand</a> (float min_value, float max_value)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rsFrac</a> (float)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> amount, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> low, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ad36abebbb36ffc5312fb2ed8baf98d39">rsClamp</a> (int amount, int low, int high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a1f9e5f628fc42e8215e9dcf89ebc6897">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> amount, <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> low, <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a7b8cb9e970171f866b75d333abf68d89">rsClamp</a> (short amount, short low, short high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a08fe0a967cc59f2ad831115557c86c50">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> amount, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> low, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ae31137028793c4aaf4df839535135837">rsClamp</a> (char amount, char low, char high)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static __inline__ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rsExtractFrustumPlanes</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *viewProj, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static __inline__ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rsIsSphereInFrustum</a> (<a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *sphere, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rsPackColorTo8888</a> (float r, float g, float b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a84d08e07ec8421c51ee8bd57d5b8b33e">rsPackColorTo8888</a> (float r, float g, float b, float a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a22e0be7e18b317a7453ebad4300934f6">rsPackColorTo8888</a> (<a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> color)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a26525a4f5093bd0f13191efe06127f4b">rsUnpackColor8888</a> (<a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> c)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>todo-jsams </p>
+
+<p>Definition in file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ad40f2fb8f416e2ab7d2879de3b3d885e"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="ad40f2fb8f416e2ab7d2879de3b3d885e" args="(uint amount, uint low, uint high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsClamp </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Clamp the value amount between low and high.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">amount</td><td>The value to clamp </td></tr>
+    <tr><td class="paramname">low</td><td></td></tr>
+    <tr><td class="paramname">high</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad36abebbb36ffc5312fb2ed8baf98d39"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="ad36abebbb36ffc5312fb2ed8baf98d39" args="(int amount, int low, int high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME int rsClamp </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1f9e5f628fc42e8215e9dcf89ebc6897"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a1f9e5f628fc42e8215e9dcf89ebc6897" args="(ushort amount, ushort low, ushort high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> rsClamp </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7b8cb9e970171f866b75d333abf68d89"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a7b8cb9e970171f866b75d333abf68d89" args="(short amount, short low, short high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME short rsClamp </td>
+          <td>(</td>
+          <td class="paramtype">short&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">short&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">short&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a08fe0a967cc59f2ad831115557c86c50"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a08fe0a967cc59f2ad831115557c86c50" args="(uchar amount, uchar low, uchar high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> rsClamp </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae31137028793c4aaf4df839535135837"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="ae31137028793c4aaf4df839535135837" args="(char amount, char low, char high)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME char rsClamp </td>
+          <td>(</td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>amount</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>low</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char&#160;</td>
+          <td class="paramname"><em>high</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a191f9c687c56322c18b7d71491602122"></a><!-- doxytag: member="rs_math.rsh::rsExtractFrustumPlanes" ref="a191f9c687c56322c18b7d71491602122" args="(const rs_matrix4x4 *viewProj, float4 *left, float4 *right, float4 *top, float4 *bottom, float4 *near, float4 *far)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static __inline__ void rsExtractFrustumPlanes </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>viewProj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>bottom</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>near</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>far</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Computes 6 frustum planes from the view projection matrix </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">viewProj</td><td>matrix to extract planes from </td></tr>
+    <tr><td class="paramname">left</td><td>plane </td></tr>
+    <tr><td class="paramname">right</td><td>plane </td></tr>
+    <tr><td class="paramname">top</td><td>plane </td></tr>
+    <tr><td class="paramname">bottom</td><td>plane </td></tr>
+    <tr><td class="paramname">near</td><td>plane </td></tr>
+    <tr><td class="paramname">far</td><td>plane </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__math_8rsh_source.html#l00102">102</a> of file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac4f127e78da0849321c7f6db14f9e989"></a><!-- doxytag: member="rs_math.rsh::rsFrac" ref="ac4f127e78da0849321c7f6db14f9e989" args="(float)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float rsFrac </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the fractional part of a float </p>
+
+</div>
+</div>
+<a class="anchor" id="a7bbeaf44838e08e68d5cf3e3d7b0818c"></a><!-- doxytag: member="rs_math.rsh::rsIsSphereInFrustum" ref="a7bbeaf44838e08e68d5cf3e3d7b0818c" args="(float4 *sphere, float4 *left, float4 *right, float4 *top, float4 *bottom, float4 *near, float4 *far)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static __inline__ bool rsIsSphereInFrustum </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>sphere</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>bottom</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>near</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
+          <td class="paramname"><em>far</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Checks if a sphere is withing the 6 frustum planes </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">sphere</td><td>float4 representing the sphere </td></tr>
+    <tr><td class="paramname">left</td><td>plane </td></tr>
+    <tr><td class="paramname">right</td><td>plane </td></tr>
+    <tr><td class="paramname">top</td><td>plane </td></tr>
+    <tr><td class="paramname">bottom</td><td>plane </td></tr>
+    <tr><td class="paramname">near</td><td>plane </td></tr>
+    <tr><td class="paramname">far</td><td>plane </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__math_8rsh_source.html#l00162">162</a> of file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a628c8d13e3fe41fc860ad937184e4dcd"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="a628c8d13e3fe41fc860ad937184e4dcd" args="(float r, float g, float b)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Pack floating point (0-1) RGB values into a uchar4. The alpha component is set to 255 (1.0).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">r</td><td></td></tr>
+    <tr><td class="paramname">g</td><td></td></tr>
+    <tr><td class="paramname">b</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a84d08e07ec8421c51ee8bd57d5b8b33e"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="a84d08e07ec8421c51ee8bd57d5b8b33e" args="(float r, float g, float b, float a)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>g</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>b</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>a</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Pack floating point (0-1) RGBA values into a uchar4.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">r</td><td></td></tr>
+    <tr><td class="paramname">g</td><td></td></tr>
+    <tr><td class="paramname">b</td><td></td></tr>
+    <tr><td class="paramname">a</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a22e0be7e18b317a7453ebad4300934f6"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="a22e0be7e18b317a7453ebad4300934f6" args="(float3 color)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
+          <td class="paramname"><em>color</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Pack floating point (0-1) RGB values into a uchar4. The alpha component is set to 255 (1.0).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">color</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4</dd></dl>
+<p>Pack floating point (0-1) RGBA values into a uchar4.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">color</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad9106e5aae5b1248870f21061f36a1c9"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="ad9106e5aae5b1248870f21061f36a1c9" args="(int max_value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int rsRand </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>max_value</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return a random value between 0 (or min_value) and max_malue. </p>
+
+</div>
+</div>
+<a class="anchor" id="a01edf1cf3cdaecb1629761b69148e189"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a01edf1cf3cdaecb1629761b69148e189" args="(int min_value, int max_value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int rsRand </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>min_value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>max_value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a03e898d810ac44158e7461b2b2b1c356"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a03e898d810ac44158e7461b2b2b1c356" args="(float max_value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float rsRand </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>max_value</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a84b2e7468314873b3aa02969e310d9e4"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a84b2e7468314873b3aa02969e310d9e4" args="(float min_value, float max_value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float rsRand </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>min_value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>max_value</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a26525a4f5093bd0f13191efe06127f4b"></a><!-- doxytag: member="rs_math.rsh::rsUnpackColor8888" ref="a26525a4f5093bd0f13191efe06127f4b" args="(uchar4 c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsUnpackColor8888 </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Unpack a uchar4 color to float4. The resulting float range will be (0-1).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>float4 </dd></dl>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__math_8rsh_source.html b/docs/html/reference/renderscript/rs__math_8rsh_source.html
new file mode 100644
index 0000000..c056994
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__math_8rsh_source.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_math.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__math_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_MATH_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MATH_RSH__</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00027"></a>00027 
+<a name="l00031"></a>00031 <span class="keyword">extern</span> <span class="keywordtype">int</span> __attribute__((overloadable))
+<a name="l00032"></a>00032     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">int</span> max_value);
+<a name="l00036"></a>00036 extern <span class="keywordtype">int</span> __attribute__((overloadable))
+<a name="l00037"></a>00037     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">int</span> min_value, <span class="keywordtype">int</span> max_value);
+<a name="l00041"></a>00041 extern <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00042"></a>00042     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">float</span> max_value);
+<a name="l00046"></a>00046 extern <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00047"></a>00047     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">float</span> min_value, <span class="keywordtype">float</span> max_value);
+<a name="l00048"></a>00048 
+<a name="l00052"></a>00052 extern <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00053"></a>00053     <a class="code" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rsFrac</a>(<span class="keywordtype">float</span>);
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 
+<a name="l00057"></a>00057 <span class="comment">// int ops</span>
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00067"></a>00067 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> amount, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> low, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> high);
+<a name="l00068"></a>00068 
+<a name="l00072"></a>00072 _RS_RUNTIME <span class="keywordtype">int</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<span class="keywordtype">int</span> amount, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high);
+<a name="l00076"></a>00076 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> amount, <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> low, <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> high);
+<a name="l00080"></a>00080 _RS_RUNTIME <span class="keywordtype">short</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<span class="keywordtype">short</span> amount, <span class="keywordtype">short</span> low, <span class="keywordtype">short</span> high);
+<a name="l00084"></a>00084 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> amount, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> low, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> high);
+<a name="l00088"></a>00088 _RS_RUNTIME <span class="keywordtype">char</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#ad40f2fb8f416e2ab7d2879de3b3d885e">rsClamp</a>(<span class="keywordtype">char</span> amount, <span class="keywordtype">char</span> low, <span class="keywordtype">char</span> high);
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090 
+<a name="l00101"></a>00101 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
+<a name="l00102"></a><a class="code" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">00102</a> <a class="code" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rsExtractFrustumPlanes</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *viewProj,
+<a name="l00103"></a>00103                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right,
+<a name="l00104"></a>00104                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom,
+<a name="l00105"></a>00105                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far) {
+<a name="l00106"></a>00106     <span class="comment">// x y z w = a b c d in the plane equation</span>
+<a name="l00107"></a>00107     left-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[0];
+<a name="l00108"></a>00108     left-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[4];
+<a name="l00109"></a>00109     left-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[8];
+<a name="l00110"></a>00110     left-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[12];
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112     right-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[0];
+<a name="l00113"></a>00113     right-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[4];
+<a name="l00114"></a>00114     right-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[8];
+<a name="l00115"></a>00115     right-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[12];
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117     top-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[1];
+<a name="l00118"></a>00118     top-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[5];
+<a name="l00119"></a>00119     top-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[9];
+<a name="l00120"></a>00120     top-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[13];
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122     bottom-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[1];
+<a name="l00123"></a>00123     bottom-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[5];
+<a name="l00124"></a>00124     bottom-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[9];
+<a name="l00125"></a>00125     bottom-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[13];
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127     near-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[2];
+<a name="l00128"></a>00128     near-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[6];
+<a name="l00129"></a>00129     near-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[10];
+<a name="l00130"></a>00130     near-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[14];
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132     far-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[2];
+<a name="l00133"></a>00133     far-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[6];
+<a name="l00134"></a>00134     far-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[10];
+<a name="l00135"></a>00135     far-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[14];
+<a name="l00136"></a>00136 
+<a name="l00137"></a>00137     <span class="keywordtype">float</span> len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(left-&gt;xyz);
+<a name="l00138"></a>00138     *left /= len;
+<a name="l00139"></a>00139     len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(right-&gt;xyz);
+<a name="l00140"></a>00140     *right /= len;
+<a name="l00141"></a>00141     len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(top-&gt;xyz);
+<a name="l00142"></a>00142     *top /= len;
+<a name="l00143"></a>00143     len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(bottom-&gt;xyz);
+<a name="l00144"></a>00144     *bottom /= len;
+<a name="l00145"></a>00145     len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(near-&gt;xyz);
+<a name="l00146"></a>00146     *near /= len;
+<a name="l00147"></a>00147     len = <a class="code" href="rs__cl_8rsh.html#a1a222b7879342279e1e0070d6afd9e18">length</a>(far-&gt;xyz);
+<a name="l00148"></a>00148     *far /= len;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 
+<a name="l00161"></a>00161 __inline__ <span class="keyword">static</span> <span class="keywordtype">bool</span> __attribute__((overloadable, always_inline))
+<a name="l00162"></a><a class="code" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">00162</a> <a class="code" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rsIsSphereInFrustum</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *sphere,
+<a name="l00163"></a>00163                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right,
+<a name="l00164"></a>00164                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom,
+<a name="l00165"></a>00165                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far) {
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     <span class="keywordtype">float</span> distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(left-&gt;xyz, sphere-&gt;xyz) + left-&gt;w;
+<a name="l00168"></a>00168     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00169"></a>00169         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00170"></a>00170     }
+<a name="l00171"></a>00171     distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(right-&gt;xyz, sphere-&gt;xyz) + right-&gt;w;
+<a name="l00172"></a>00172     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00173"></a>00173         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00174"></a>00174     }
+<a name="l00175"></a>00175     distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(top-&gt;xyz, sphere-&gt;xyz) + top-&gt;w;
+<a name="l00176"></a>00176     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00177"></a>00177         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00178"></a>00178     }
+<a name="l00179"></a>00179     distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(bottom-&gt;xyz, sphere-&gt;xyz) + bottom-&gt;w;
+<a name="l00180"></a>00180     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00181"></a>00181         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00182"></a>00182     }
+<a name="l00183"></a>00183     distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(near-&gt;xyz, sphere-&gt;xyz) + near-&gt;w;
+<a name="l00184"></a>00184     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00185"></a>00185         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00186"></a>00186     }
+<a name="l00187"></a>00187     distToCenter = <a class="code" href="rs__cl_8rsh.html#a70544acaca578035a849eef67d62c449">dot</a>(far-&gt;xyz, sphere-&gt;xyz) + far-&gt;w;
+<a name="l00188"></a>00188     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
+<a name="l00189"></a>00189         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00190"></a>00190     }
+<a name="l00191"></a>00191     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194 
+<a name="l00205"></a>00205 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rsPackColorTo8888</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b);
+<a name="l00206"></a>00206 
+<a name="l00217"></a>00217 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rsPackColorTo8888</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
+<a name="l00218"></a>00218 
+<a name="l00227"></a>00227 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rsPackColorTo8888</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> color);
+<a name="l00228"></a>00228 
+<a name="l00236"></a>00236 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a628c8d13e3fe41fc860ad937184e4dcd">rsPackColorTo8888</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> color);
+<a name="l00237"></a>00237 
+<a name="l00245"></a>00245 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__math_8rsh.html#a26525a4f5093bd0f13191efe06127f4b">rsUnpackColor8888</a>(<a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> c);
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247 
+<a name="l00248"></a>00248 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh.html b/docs/html/reference/renderscript/rs__matrix_8rsh.html
new file mode 100644
index 0000000..b956301
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__matrix_8rsh.html
@@ -0,0 +1,1520 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rsMatrixSet</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ada106cb8f08e4b23930d7ba1a0ce5609">rsMatrixSet</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a086c4f1cd21500f8e332226af4f62001">rsMatrixSet</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, float v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rsMatrixGet</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a90b0548da8dbe1f643bcbac8466e5b72">rsMatrixGet</a> (const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a22a46174a3c72452c9f6c33403aeae19">rsMatrixGet</a> (const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5b31e83553efa947db2198674d5db043">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad2954a5ac11d2370227296be89e92471">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const float *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aef942535c5d56072125dcf5244970ea2">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const float *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa327089f7ad9161d7372094163147005">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const float *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5239a3f5f2becd20507d0aa56638ba03">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a06176acb38405937cb94c835a712a3b3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a3a3d0f0053720fb4afb3a3eb32e42a82">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a654e5abe095770979d740f7b55382bd0">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5f3697805c794c9c9f2f8cfdde4b9a44">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rsMatrixLoadRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rsMatrixLoadScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rsMatrixLoadTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *lhs, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a78872343ea6a5c1a846160ccdc4add52">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *lhs, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0dd4755c28fc896626ebf5dc784130f">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *lhs, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0b03aeec17ec8b9c5e75f8efb1bdc53">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ab1973ad3efa0ab2d53f466dd9fb190bb">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rsMatrixRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rsMatrixScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rsMatrixLoadOrtho</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rsMatrixLoadFrustum</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rsMatrixLoadPerspective</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float fovy, float aspect, float near, float far)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a47b6abbf32ffaf77bb13d96c3f05779f">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a716bc2d29b80eb25388aba3ba8845aef">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rsMatrixInverse</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rsMatrixInverseTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac52acb31a705f6c68af8bddea0e79969">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Matrix routines. </p>
+
+<p>Definition in file <a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="af1fb87eb02f166bb85ef10a92333bb49"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="af1fb87eb02f166bb85ef10a92333bb49" args="(const rs_matrix4x4 *m, uint32_t row, uint32_t col)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get one element of a matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td>The matrix to read from </td></tr>
+    <tr><td class="paramname">row</td><td></td></tr>
+    <tr><td class="paramname">col</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>float </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a90b0548da8dbe1f643bcbac8466e5b72"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="a90b0548da8dbe1f643bcbac8466e5b72" args="(const rs_matrix3x3 *m, uint32_t row, uint32_t col)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a22a46174a3c72452c9f6c33403aeae19"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="a22a46174a3c72452c9f6c33403aeae19" args="(const rs_matrix2x2 *m, uint32_t row, uint32_t col)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a00b6a334ba5ac94d84850f22ec9f4de5"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverse" ref="a00b6a334ba5ac94d84850f22ec9f4de5" args="(rs_matrix4x4 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsMatrixInverse </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns true if the matrix was successfully inversed</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac05080d52da2d99a759ef34fa0655e82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverseTranspose" ref="ac05080d52da2d99a759ef34fa0655e82" args="(rs_matrix4x4 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsMatrixInverseTranspose </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns true if the matrix was successfully inversed and transposed.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac380c4117e047da494a74f0dad20fab3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="ac380c4117e047da494a74f0dad20fab3" args="(rs_matrix4x4 *m, const float *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const float *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the elements of a matrix from an array of floats.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aef942535c5d56072125dcf5244970ea2"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aef942535c5d56072125dcf5244970ea2" args="(rs_matrix3x3 *m, const float *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const float *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa327089f7ad9161d7372094163147005"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aa327089f7ad9161d7372094163147005" args="(rs_matrix2x2 *m, const float *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const float *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5239a3f5f2becd20507d0aa56638ba03"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5239a3f5f2becd20507d0aa56638ba03" args="(rs_matrix4x4 *m, const rs_matrix4x4 *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a06176acb38405937cb94c835a712a3b3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a06176acb38405937cb94c835a712a3b3" args="(rs_matrix4x4 *m, const rs_matrix3x3 *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3a3d0f0053720fb4afb3a3eb32e42a82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a3a3d0f0053720fb4afb3a3eb32e42a82" args="(rs_matrix4x4 *m, const rs_matrix2x2 *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the elements of a matrix from another matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a654e5abe095770979d740f7b55382bd0"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a654e5abe095770979d740f7b55382bd0" args="(rs_matrix3x3 *m, const rs_matrix3x3 *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5f3697805c794c9c9f2f8cfdde4b9a44"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5f3697805c794c9c9f2f8cfdde4b9a44" args="(rs_matrix2x2 *m, const rs_matrix2x2 *v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad25760aaf01e95d0055237afab41bbb3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadFrustum" ref="ad25760aaf01e95d0055237afab41bbb3" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadFrustum </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>bottom</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>near</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>far</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load an Frustum projection matrix constructed from the 6 planes</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">left</td><td></td></tr>
+    <tr><td class="paramname">right</td><td></td></tr>
+    <tr><td class="paramname">bottom</td><td></td></tr>
+    <tr><td class="paramname">top</td><td></td></tr>
+    <tr><td class="paramname">near</td><td></td></tr>
+    <tr><td class="paramname">far</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0ffd9de971cf10d0a663ff565be8d3cc"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a0ffd9de971cf10d0a663ff565be8d3cc" args="(rs_matrix4x4 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadIdentity </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the elements of a matrix to the identity matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5b31e83553efa947db2198674d5db043"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a5b31e83553efa947db2198674d5db043" args="(rs_matrix3x3 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadIdentity </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad2954a5ac11d2370227296be89e92471"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="ad2954a5ac11d2370227296be89e92471" args="(rs_matrix2x2 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadIdentity </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a79f14c4c0f5ecc1bbd0bf54da8b653ef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a79f14c4c0f5ecc1bbd0bf54da8b653ef" args="(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiply two matrix (lhs, rhs) and place the result in m.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">lhs</td><td></td></tr>
+    <tr><td class="paramname">rhs</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a78872343ea6a5c1a846160ccdc4add52"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a78872343ea6a5c1a846160ccdc4add52" args="(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae0dd4755c28fc896626ebf5dc784130f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="ae0dd4755c28fc896626ebf5dc784130f" args="(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>lhs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4c59884a0e534dbbcdc5655842732d43"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadOrtho" ref="a4c59884a0e534dbbcdc5655842732d43" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadOrtho </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>left</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>right</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>bottom</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>top</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>near</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>far</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load an Ortho projection matrix constructed from the 6 planes</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">left</td><td></td></tr>
+    <tr><td class="paramname">right</td><td></td></tr>
+    <tr><td class="paramname">bottom</td><td></td></tr>
+    <tr><td class="paramname">top</td><td></td></tr>
+    <tr><td class="paramname">near</td><td></td></tr>
+    <tr><td class="paramname">far</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa404c34d7478f2921f7415d2da95d02b"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadPerspective" ref="aa404c34d7478f2921f7415d2da95d02b" args="(rs_matrix4x4 *m, float fovy, float aspect, float near, float far)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadPerspective </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>fovy</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>aspect</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>near</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>far</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load an perspective projection matrix constructed from the 6 planes</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">fovy</td><td>Field of view, in degrees along the Y axis. </td></tr>
+    <tr><td class="paramname">aspect</td><td>Ratio of x / y. </td></tr>
+    <tr><td class="paramname">near</td><td></td></tr>
+    <tr><td class="paramname">far</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a268032f3ac6d766b1d7fe72a6cb50464"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadRotate" ref="a268032f3ac6d766b1d7fe72a6cb50464" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadRotate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load a rotation matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">rot</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acaf51d1f9ad5041ce01fbf8b7c5923fd"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadScale" ref="acaf51d1f9ad5041ce01fbf8b7c5923fd" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadScale </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load a scale matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1b521c8a3d1260fa732cbf0a71af0e74"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadTranslate" ref="a1b521c8a3d1260fa732cbf0a71af0e74" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixLoadTranslate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Load a translation matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a97953ab2606900a839e5816c619abe66"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a97953ab2606900a839e5816c619abe66" args="(rs_matrix4x4 *m, const rs_matrix4x4 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiply the matrix m by rhs and place the result back into m.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td>(lhs) </td></tr>
+    <tr><td class="paramname">rhs</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae0b03aeec17ec8b9c5e75f8efb1bdc53"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ae0b03aeec17ec8b9c5e75f8efb1bdc53" args="(rs_matrix3x3 *m, const rs_matrix3x3 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab1973ad3efa0ab2d53f466dd9fb190bb"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ab1973ad3efa0ab2d53f466dd9fb190bb" args="(rs_matrix2x2 *m, const rs_matrix2x2 *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a47b6abbf32ffaf77bb13d96c3f05779f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a47b6abbf32ffaf77bb13d96c3f05779f" args="(rs_matrix4x4 *m, float4 in)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td>
+          <td class="paramname"><em>in</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiply a vector by a matrix and return the result vector. API version 10-13</p>
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a716bc2d29b80eb25388aba3ba8845aef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a716bc2d29b80eb25388aba3ba8845aef" args="(rs_matrix3x3 *m, float3 in)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
+          <td class="paramname"><em>in</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4d9a8bb7c3f5d67b14fa349bdd531d13"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a4d9a8bb7c3f5d67b14fa349bdd531d13" args="(rs_matrix2x2 *m, float2 in)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> rsMatrixMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td>
+          <td class="paramname"><em>in</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad5ed05ca4880397fb29615e3c6798de1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixRotate" ref="ad5ed05ca4880397fb29615e3c6798de1" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixRotate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiple matrix m with a rotation matrix</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">rot</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a94cc6b22bd1a6c07a9a1c1d21afb392c"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixScale" ref="a94cc6b22bd1a6c07a9a1c1d21afb392c" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixScale </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiple matrix m with a scale matrix</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a68e320f7fa2cc5a5b4759e3ab679ee10"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="a68e320f7fa2cc5a5b4759e3ab679ee10" args="(rs_matrix4x4 *m, uint32_t row, uint32_t col, float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set one element of a matrix.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td>The matrix to be set </td></tr>
+    <tr><td class="paramname">row</td><td></td></tr>
+    <tr><td class="paramname">col</td><td></td></tr>
+    <tr><td class="paramname">v</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ada106cb8f08e4b23930d7ba1a0ce5609"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="ada106cb8f08e4b23930d7ba1a0ce5609" args="(rs_matrix3x3 *m, uint32_t row, uint32_t col, float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a086c4f1cd21500f8e332226af4f62001"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="a086c4f1cd21500f8e332226af4f62001" args="(rs_matrix2x2 *m, uint32_t row, uint32_t col, float v)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
+          <td class="paramname"><em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>v</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4df5f9b5bb6044f3c3426f2f58b94405"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranslate" ref="a4df5f9b5bb6044f3c3426f2f58b94405" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixTranslate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiple matrix m with a translation matrix</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+    <tr><td class="paramname">x</td><td></td></tr>
+    <tr><td class="paramname">y</td><td></td></tr>
+    <tr><td class="paramname">z</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a88095c70f1550c760844b3e32e41a31a"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a88095c70f1550c760844b3e32e41a31a" args="(rs_matrix4x4 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixTranspose </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Transpose the matrix m.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac52acb31a705f6c68af8bddea0e79969"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="ac52acb31a705f6c68af8bddea0e79969" args="(rs_matrix3x3 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixTranspose </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a49164dd4d4e85b212196028b1fd89dc1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a49164dd4d4e85b212196028b1fd89dc1" args="(rs_matrix2x2 *m)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsMatrixTranspose </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
+          <td class="paramname"><em>m</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh_source.html b/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
new file mode 100644
index 0000000..531a3e3
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_matrix.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__matrix_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_MATRIX_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MATRIX_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00036"></a>00036 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00037"></a>00037 <a class="code" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rsMatrixSet</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <span class="keywordtype">float</span> v);
+<a name="l00041"></a>00041 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00042"></a>00042 <a class="code" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rsMatrixSet</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <span class="keywordtype">float</span> v);
+<a name="l00046"></a>00046 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00047"></a>00047 <a class="code" href="rs__matrix_8rsh.html#a68e320f7fa2cc5a5b4759e3ab679ee10">rsMatrixSet</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <span class="keywordtype">float</span> v);
+<a name="l00048"></a>00048 
+<a name="l00058"></a>00058 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00059"></a>00059 <a class="code" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rsMatrixGet</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col);
+<a name="l00063"></a>00063 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00064"></a>00064 <a class="code" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rsMatrixGet</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col);
+<a name="l00068"></a>00068 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00069"></a>00069 <a class="code" href="rs__matrix_8rsh.html#af1fb87eb02f166bb85ef10a92333bb49">rsMatrixGet</a>(const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col);
+<a name="l00070"></a>00070 
+<a name="l00076"></a>00076 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
+<a name="l00080"></a>00080 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m);
+<a name="l00084"></a>00084 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m);
+<a name="l00085"></a>00085 
+<a name="l00091"></a>00091 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <span class="keywordtype">float</span> *v);
+<a name="l00095"></a>00095 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <span class="keywordtype">float</span> *v);
+<a name="l00099"></a>00099 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <span class="keywordtype">float</span> *v);
+<a name="l00103"></a>00103 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *v);
+<a name="l00107"></a>00107 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *v);
+<a name="l00108"></a>00108 
+<a name="l00114"></a>00114 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *v);
+<a name="l00118"></a>00118 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *v);
+<a name="l00122"></a>00122 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *v);
+<a name="l00123"></a>00123 
+<a name="l00133"></a>00133 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00134"></a>00134 <a class="code" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rsMatrixLoadRotate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00135"></a>00135 
+<a name="l00144"></a>00144 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00145"></a>00145 <a class="code" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rsMatrixLoadScale</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00146"></a>00146 
+<a name="l00155"></a>00155 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00156"></a>00156 <a class="code" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rsMatrixLoadTranslate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00157"></a>00157 
+<a name="l00165"></a>00165 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00166"></a>00166 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *lhs, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *rhs);
+<a name="l00170"></a>00170 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00171"></a>00171 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *lhs, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *rhs);
+<a name="l00175"></a>00175 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00176"></a>00176 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *lhs, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *rhs);
+<a name="l00177"></a>00177 
+<a name="l00184"></a>00184 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00185"></a>00185 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *rhs);
+<a name="l00189"></a>00189 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00190"></a>00190 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *rhs);
+<a name="l00194"></a>00194 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00195"></a>00195 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *rhs);
+<a name="l00196"></a>00196 
+<a name="l00206"></a>00206 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00207"></a>00207 <a class="code" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rsMatrixRotate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00208"></a>00208 
+<a name="l00217"></a>00217 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00218"></a>00218 <a class="code" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rsMatrixScale</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00219"></a>00219 
+<a name="l00228"></a>00228 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00229"></a>00229 <a class="code" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
+<a name="l00230"></a>00230 
+<a name="l00242"></a>00242 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00243"></a>00243 <a class="code" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rsMatrixLoadOrtho</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> left, <span class="keywordtype">float</span> right, <span class="keywordtype">float</span> bottom, <span class="keywordtype">float</span> top, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
+<a name="l00244"></a>00244 
+<a name="l00256"></a>00256 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00257"></a>00257 <a class="code" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rsMatrixLoadFrustum</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> left, <span class="keywordtype">float</span> right, <span class="keywordtype">float</span> bottom, <span class="keywordtype">float</span> top, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
+<a name="l00258"></a>00258 
+<a name="l00268"></a>00268 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00269"></a>00269 <a class="code" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rsMatrixLoadPerspective</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>* m, <span class="keywordtype">float</span> fovy, <span class="keywordtype">float</span> aspect, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
+<a name="l00270"></a>00270 
+<a name="l00271"></a>00271 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
+<a name="l00272"></a>00272 <span class="preprocessor"></span>
+<a name="l00276"></a>00276 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00277"></a>00277 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in);
+<a name="l00278"></a>00278 
+<a name="l00282"></a>00282 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00283"></a>00283 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
+<a name="l00284"></a>00284 
+<a name="l00288"></a>00288 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00289"></a>00289 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00290"></a>00290 
+<a name="l00294"></a>00294 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
+<a name="l00295"></a>00295 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
+<a name="l00296"></a>00296 
+<a name="l00300"></a>00300 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
+<a name="l00301"></a>00301 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00302"></a>00302 
+<a name="l00306"></a>00306 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable))
+<a name="l00307"></a>00307 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00308"></a>00308 <span class="preprocessor">#else</span>
+<a name="l00309"></a>00309 <span class="preprocessor"></span>
+<a name="l00313"></a>00313 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00314"></a>00314 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in);
+<a name="l00315"></a>00315 
+<a name="l00319"></a>00319 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00320"></a>00320 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
+<a name="l00321"></a>00321 
+<a name="l00325"></a>00325 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
+<a name="l00326"></a>00326 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00327"></a>00327 
+<a name="l00331"></a>00331 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
+<a name="l00332"></a>00332 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
+<a name="l00333"></a>00333 
+<a name="l00337"></a>00337 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
+<a name="l00338"></a>00338 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00339"></a>00339 
+<a name="l00343"></a>00343 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable))
+<a name="l00344"></a>00344 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
+<a name="l00345"></a>00345 <span class="preprocessor">#endif</span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span>
+<a name="l00347"></a>00347 
+<a name="l00353"></a>00353 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rsMatrixInverse</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
+<a name="l00354"></a>00354 
+<a name="l00360"></a>00360 extern <span class="keywordtype">bool</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rsMatrixInverseTranspose</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
+<a name="l00361"></a>00361 
+<a name="l00367"></a>00367 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
+<a name="l00371"></a>00371 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m);
+<a name="l00375"></a>00375 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m);
+<a name="l00376"></a>00376 
+<a name="l00377"></a>00377 
+<a name="l00378"></a>00378 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__object_8rsh.html b/docs/html/reference/renderscript/rs__object_8rsh.html
new file mode 100644
index 0000000..464e7e5
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__object_8rsh.html
@@ -0,0 +1,791 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a> (<a class="el" href="structrs__element.html">rs_element</a> *dst, <a class="el" href="structrs__element.html">rs_element</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ab1c6d0672b6b88add70a98e627eeb7ae">rsSetObject</a> (<a class="el" href="structrs__type.html">rs_type</a> *dst, <a class="el" href="structrs__type.html">rs_type</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#af3446b1b9c2e4b600cdc8d828f3dbb59">rsSetObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst, <a class="el" href="structrs__allocation.html">rs_allocation</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5132f90b4aaf8d2e35e6ad021fb08175">rsSetObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst, <a class="el" href="structrs__sampler.html">rs_sampler</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a9dfc520ed267ac9733760bc628a93cae">rsSetObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst, <a class="el" href="structrs__script.html">rs_script</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4d6368cf71d6fd2e55efbe23af6cfd7c">rsSetObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst, <a class="el" href="structrs__mesh.html">rs_mesh</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a8135bceeb7b3ec8bf9a49d04e39bd565">rsSetObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst, <a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5512c023d40e416bea709f8d8caf9674">rsSetObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst, <a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a42c0d25d78051a1de58a7a1c4dcfdada">rsSetObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> *dst, <a class="el" href="structrs__program__raster.html">rs_program_raster</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4babadff570c9f57edbb3fb98c80a113">rsSetObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> *dst, <a class="el" href="structrs__program__store.html">rs_program_store</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ad1af9aed63d9f925a8e6288c0607d55b">rsSetObject</a> (<a class="el" href="structrs__font.html">rs_font</a> *dst, <a class="el" href="structrs__font.html">rs_font</a> src)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a> (<a class="el" href="structrs__element.html">rs_element</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ae9c24592eb550e72c9ff480dfbb9fe07">rsClearObject</a> (<a class="el" href="structrs__type.html">rs_type</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5b944e2762ce1a44f7e63abd41851bcd">rsClearObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a51fe2098cc5c2ff73ceff8cc46b6dd89">rsClearObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a0034d7e67f80a9ce2e1139f1cb54b9a4">rsClearObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6f26564cf4fa1bcd46db51a478bf91b9">rsClearObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afc6aca3a903d5e2021d9eeab4836fd26">rsClearObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a712fcc988eedf21845495477cec54029">rsClearObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a06b6d56105e192e121a5a4a555dc7b70">rsClearObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a691d3c2564dd2c08d965ccb1c73a9b29">rsClearObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aa246aa3c8162ef03e43bc0062671ae29">rsClearObject</a> (<a class="el" href="structrs__font.html">rs_font</a> *dst)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a> (<a class="el" href="structrs__element.html">rs_element</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a445c32d5bc085369f1ffa1a8ba13a381">rsIsObject</a> (<a class="el" href="structrs__type.html">rs_type</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afd33063fc6e45cb23f9a6f68dc2976ba">rsIsObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a509c7f0eacf1f07a3e7afaa029168f11">rsIsObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6dc9db5fb60856b04c0b495a85affcbc">rsIsObject</a> (<a class="el" href="structrs__script.html">rs_script</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aa1860f7322da25f4c4a1727571b01e2b">rsIsObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afa57d9148778b03b270facbdbcb88816">rsIsObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#acaa5da532eab1803a72fc4af2e7c6573">rsIsObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a2358cf1fd6b2e0b1d6f1bde8664d9c41">rsIsObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a547cd0a8071d895139893f1e10f5c3fd">rsIsObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ac1d6da920f12974b3633d25ed078da2d">rsIsObject</a> (<a class="el" href="structrs__font.html">rs_font</a>)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Object routines. </p>
+
+<p>Definition in file <a class="el" href="rs__object_8rsh_source.html">rs_object.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="aab5f47dc11b9044b3d02c4ed818fe6e7"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="aab5f47dc11b9044b3d02c4ed818fe6e7" args="(rs_element *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sets the object to NULL.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>bool </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ae9c24592eb550e72c9ff480dfbb9fe07"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="ae9c24592eb550e72c9ff480dfbb9fe07" args="(rs_type *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5b944e2762ce1a44f7e63abd41851bcd"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a5b944e2762ce1a44f7e63abd41851bcd" args="(rs_allocation *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a51fe2098cc5c2ff73ceff8cc46b6dd89"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a51fe2098cc5c2ff73ceff8cc46b6dd89" args="(rs_sampler *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0034d7e67f80a9ce2e1139f1cb54b9a4"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a0034d7e67f80a9ce2e1139f1cb54b9a4" args="(rs_script *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6f26564cf4fa1bcd46db51a478bf91b9"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a6f26564cf4fa1bcd46db51a478bf91b9" args="(rs_mesh *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="afc6aca3a903d5e2021d9eeab4836fd26"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="afc6aca3a903d5e2021d9eeab4836fd26" args="(rs_program_fragment *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a712fcc988eedf21845495477cec54029"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a712fcc988eedf21845495477cec54029" args="(rs_program_vertex *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a06b6d56105e192e121a5a4a555dc7b70"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a06b6d56105e192e121a5a4a555dc7b70" args="(rs_program_raster *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a691d3c2564dd2c08d965ccb1c73a9b29"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a691d3c2564dd2c08d965ccb1c73a9b29" args="(rs_program_store *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa246aa3c8162ef03e43bc0062671ae29"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="aa246aa3c8162ef03e43bc0062671ae29" args="(rs_font *dst)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsClearObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a> *&#160;</td>
+          <td class="paramname"><em>dst</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a81f862730b961bd93ac132c24cbc0f82"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a81f862730b961bd93ac132c24cbc0f82" args="(rs_element)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Tests if the object is valid. Returns true if the object is valid, false if it is NULL.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>bool </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a445c32d5bc085369f1ffa1a8ba13a381"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a445c32d5bc085369f1ffa1a8ba13a381" args="(rs_type)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="afd33063fc6e45cb23f9a6f68dc2976ba"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="afd33063fc6e45cb23f9a6f68dc2976ba" args="(rs_allocation)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a509c7f0eacf1f07a3e7afaa029168f11"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a509c7f0eacf1f07a3e7afaa029168f11" args="(rs_sampler)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6dc9db5fb60856b04c0b495a85affcbc"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a6dc9db5fb60856b04c0b495a85affcbc" args="(rs_script)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa1860f7322da25f4c4a1727571b01e2b"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="aa1860f7322da25f4c4a1727571b01e2b" args="(rs_mesh)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="afa57d9148778b03b270facbdbcb88816"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="afa57d9148778b03b270facbdbcb88816" args="(rs_program_fragment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="acaa5da532eab1803a72fc4af2e7c6573"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="acaa5da532eab1803a72fc4af2e7c6573" args="(rs_program_vertex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2358cf1fd6b2e0b1d6f1bde8664d9c41"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a2358cf1fd6b2e0b1d6f1bde8664d9c41" args="(rs_program_raster)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a547cd0a8071d895139893f1e10f5c3fd"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a547cd0a8071d895139893f1e10f5c3fd" args="(rs_program_store)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac1d6da920f12974b3633d25ed078da2d"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="ac1d6da920f12974b3633d25ed078da2d" args="(rs_font)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool rsIsObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="af6983a1578621ce283acc07f876cda62"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="af6983a1578621ce283acc07f876cda62" args="(rs_element *dst, rs_element src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Copy reference to the specified object.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">dst</td><td></td></tr>
+    <tr><td class="paramname">src</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab1c6d0672b6b88add70a98e627eeb7ae"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="ab1c6d0672b6b88add70a98e627eeb7ae" args="(rs_type *dst, rs_type src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="af3446b1b9c2e4b600cdc8d828f3dbb59"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="af3446b1b9c2e4b600cdc8d828f3dbb59" args="(rs_allocation *dst, rs_allocation src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5132f90b4aaf8d2e35e6ad021fb08175"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a5132f90b4aaf8d2e35e6ad021fb08175" args="(rs_sampler *dst, rs_sampler src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9dfc520ed267ac9733760bc628a93cae"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a9dfc520ed267ac9733760bc628a93cae" args="(rs_script *dst, rs_script src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4d6368cf71d6fd2e55efbe23af6cfd7c"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a4d6368cf71d6fd2e55efbe23af6cfd7c" args="(rs_mesh *dst, rs_mesh src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8135bceeb7b3ec8bf9a49d04e39bd565"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a8135bceeb7b3ec8bf9a49d04e39bd565" args="(rs_program_fragment *dst, rs_program_fragment src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5512c023d40e416bea709f8d8caf9674"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a5512c023d40e416bea709f8d8caf9674" args="(rs_program_vertex *dst, rs_program_vertex src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a42c0d25d78051a1de58a7a1c4dcfdada"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a42c0d25d78051a1de58a7a1c4dcfdada" args="(rs_program_raster *dst, rs_program_raster src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4babadff570c9f57edbb3fb98c80a113"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a4babadff570c9f57edbb3fb98c80a113" args="(rs_program_store *dst, rs_program_store src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad1af9aed63d9f925a8e6288c0607d55b"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="ad1af9aed63d9f925a8e6288c0607d55b" args="(rs_font *dst, rs_font src)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void rsSetObject </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a> *&#160;</td>
+          <td class="paramname"><em>dst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
+          <td class="paramname"><em>src</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__object_8rsh_source.html b/docs/html/reference/renderscript/rs__object_8rsh_source.html
new file mode 100644
index 0000000..0f9b488
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__object_8rsh_source.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_object.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__object_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_OBJECT_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_OBJECT_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 
+<a name="l00033"></a>00033 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00034"></a>00034     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> *dst, <a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> src);
+<a name="l00038"></a>00038 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00039"></a>00039     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a> *dst, <a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a> src);
+<a name="l00043"></a>00043 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00044"></a>00044     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> *dst, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> src);
+<a name="l00048"></a>00048 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00049"></a>00049     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> *dst, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> src);
+<a name="l00053"></a>00053 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00054"></a>00054     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> *dst, <a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> src);
+<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00059"></a>00059     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst, <a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> src);
+<a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00064"></a>00064     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst, <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> src);
+<a name="l00068"></a>00068 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00069"></a>00069     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst, <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> src);
+<a name="l00073"></a>00073 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00074"></a>00074     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst, <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> src);
+<a name="l00078"></a>00078 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00079"></a>00079     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst, <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> src);
+<a name="l00083"></a>00083 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00084"></a>00084     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst, <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> src);
+<a name="l00085"></a>00085 
+<a name="l00091"></a>00091 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00092"></a>00092     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a> *dst);
+<a name="l00096"></a>00096 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00097"></a>00097     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a> *dst);
+<a name="l00101"></a>00101 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00102"></a>00102     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> *dst);
+<a name="l00106"></a>00106 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00107"></a>00107     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a> *dst);
+<a name="l00111"></a>00111 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00112"></a>00112     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a> *dst);
+<a name="l00116"></a>00116 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00117"></a>00117     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> *dst);
+<a name="l00121"></a>00121 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00122"></a>00122     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> *dst);
+<a name="l00126"></a>00126 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00127"></a>00127     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> *dst);
+<a name="l00131"></a>00131 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00132"></a>00132     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> *dst);
+<a name="l00136"></a>00136 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00137"></a>00137     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> *dst);
+<a name="l00141"></a>00141 extern <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00142"></a>00142     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> *dst);
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145 
+<a name="l00152"></a>00152 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00153"></a>00153     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a>);
+<a name="l00157"></a>00157 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00158"></a>00158     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a>);
+<a name="l00162"></a>00162 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00163"></a>00163     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
+<a name="l00167"></a>00167 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00168"></a>00168     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
+<a name="l00172"></a>00172 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00173"></a>00173     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a>);
+<a name="l00177"></a>00177 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00178"></a>00178     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a>);
+<a name="l00182"></a>00182 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00183"></a>00183     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>);
+<a name="l00187"></a>00187 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00188"></a>00188     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>);
+<a name="l00192"></a>00192 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00193"></a>00193     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>);
+<a name="l00197"></a>00197 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00198"></a>00198     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>);
+<a name="l00202"></a>00202 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
+<a name="l00203"></a>00203     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>);
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh.html b/docs/html/reference/renderscript/rs__quaternion_8rsh.html
new file mode 100644
index 0000000..bd6979c
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__quaternion_8rsh.html
@@ -0,0 +1,556 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float w, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">rsQuaternionSet</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float s)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rsQuaternionAdd</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float rot, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rsQuaternionLoadRotate</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float rot, float x, float y, float z)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rsQuaternionConjugate</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a> (const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">rsQuaternionMultiply</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rsQuaternionSlerp</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1, float t)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rsQuaternionGetMatrixUnit</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Quaternion routines. </p>
+
+<p>Definition in file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+</div><hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a5e6e493b9917336b0d9118fdd4e91444"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionAdd" ref="a5e6e493b9917336b0d9118fdd4e91444" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionAdd </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Add two quaternions </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>destination quaternion to add to </td></tr>
+    <tr><td class="paramname">rsh</td><td>right hand side quaternion to add </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00074">74</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acd670264e49743d35f38028b8e2a8800"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionConjugate" ref="acd670264e49743d35f38028b8e2a8800" args="(rs_quaternion *q)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionConjugate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Conjugates the quaternion </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>quaternion to conjugate </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00127">127</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa810f8857439564e7b3be771f47b40ca"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionDot" ref="aa810f8857439564e7b3be771f47b40ca" args="(const rs_quaternion *q0, const rs_quaternion *q1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static float rsQuaternionDot </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q0</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q1</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Dot product of two quaternions </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q0</td><td>first quaternion </td></tr>
+    <tr><td class="paramname">q1</td><td>second quaternion </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>dot product between q0 and q1 </dd></dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00140">140</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7726c524868c49892976fec53ea0693b"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionGetMatrixUnit" ref="a7726c524868c49892976fec53ea0693b" args="(rs_matrix4x4 *m, const rs_quaternion *q)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionGetMatrixUnit </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
+          <td class="paramname"><em>m</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Computes rotation matrix from the normalized quaternion </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">m</td><td>resulting matrix </td></tr>
+    <tr><td class="paramname">p</td><td>normalized quaternion </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00228">228</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adf4423c521e34f3cf29d5dd5b5a93de0"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionLoadRotate" ref="adf4423c521e34f3cf29d5dd5b5a93de0" args="(rs_quaternion *q, float rot, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionLoadRotate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Loads a quaternion that represents a rotation about an arbitrary vector (doesn't have to be unit) </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>quaternion to set </td></tr>
+    <tr><td class="paramname">rot</td><td>angle to rotate by </td></tr>
+    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
+    <tr><td class="paramname">y</td><td>component of a vector </td></tr>
+    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00111">111</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa72a43cf3d7b5924de1ddfaa5766db09"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionLoadRotateUnit" ref="aa72a43cf3d7b5924de1ddfaa5766db09" args="(rs_quaternion *q, float rot, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionLoadRotateUnit </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rot</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Loads a quaternion that represents a rotation about an arbitrary unit vector </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>quaternion to set </td></tr>
+    <tr><td class="paramname">rot</td><td>angle to rotate by </td></tr>
+    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
+    <tr><td class="paramname">y</td><td>component of a vector </td></tr>
+    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00090">90</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f3d214912facf72f6a6d57e95aa3c3b"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionMultiply" ref="a4f3d214912facf72f6a6d57e95aa3c3b" args="(rs_quaternion *q, float s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>s</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiply quaternion by a scalar </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>quaternion to multiply </td></tr>
+    <tr><td class="paramname">s</td><td>scalar </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00061">61</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8bbbb286a2e2cb71b416c053f44844c3"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionMultiply" ref="a8bbbb286a2e2cb71b416c053f44844c3" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionMultiply </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Multiply quaternion by another quaternion </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>destination quaternion </td></tr>
+    <tr><td class="paramname">rhs</td><td>right hand side quaternion to multiply by </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00163">163</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abb31aad2416044ad5bbf44ee7c838e2a"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionNormalize" ref="abb31aad2416044ad5bbf44ee7c838e2a" args="(rs_quaternion *q)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionNormalize </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Normalizes the quaternion </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>quaternion to normalize </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00149">149</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5ff868dbc33e710a666a102fdcc6670a"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSet" ref="a5ff868dbc33e710a666a102fdcc6670a" args="(rs_quaternion *q, float w, float x, float y, float z)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionSet </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>w</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>y</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>z</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the quaternion components </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">w</td><td>component </td></tr>
+    <tr><td class="paramname">x</td><td>component </td></tr>
+    <tr><td class="paramname">y</td><td>component </td></tr>
+    <tr><td class="paramname">z</td><td>component </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00035">35</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a249782133e54f13a8096d1fbe295714d"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSet" ref="a249782133e54f13a8096d1fbe295714d" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionSet </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>rhs</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the quaternion from another quaternion </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>destination quaternion </td></tr>
+    <tr><td class="paramname">rhs</td><td>source quaternion </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00048">48</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7da94a30e287cbb8148771a5cd768dbd"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSlerp" ref="a7da94a30e287cbb8148771a5cd768dbd" args="(rs_quaternion *q, const rs_quaternion *q0, const rs_quaternion *q1, float t)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void rsQuaternionSlerp </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q0</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
+          <td class="paramname"><em>q1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>t</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Performs spherical linear interpolation between two quaternions </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">q</td><td>result quaternion from interpolation </td></tr>
+    <tr><td class="paramname">q0</td><td>first param </td></tr>
+    <tr><td class="paramname">q1</td><td>second param </td></tr>
+    <tr><td class="paramname">t</td><td>how much to interpolate by </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00182">182</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html b/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
new file mode 100644
index 0000000..c08565a
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_quaternion.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__quaternion_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_QUATERNION_RSH__</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_QUATERNION_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 
+<a name="l00034"></a>00034 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00035"></a><a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">00035</a> <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
+<a name="l00036"></a>00036     q-&gt;w = w;
+<a name="l00037"></a>00037     q-&gt;x = x;
+<a name="l00038"></a>00038     q-&gt;y = y;
+<a name="l00039"></a>00039     q-&gt;z = z;
+<a name="l00040"></a>00040 }
+<a name="l00041"></a>00041 
+<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00048"></a><a class="code" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">00048</a> <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
+<a name="l00049"></a>00049     q-&gt;w = rhs-&gt;w;
+<a name="l00050"></a>00050     q-&gt;x = rhs-&gt;x;
+<a name="l00051"></a>00051     q-&gt;y = rhs-&gt;y;
+<a name="l00052"></a>00052     q-&gt;z = rhs-&gt;z;
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 
+<a name="l00060"></a>00060 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00061"></a><a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">00061</a> <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> s) {
+<a name="l00062"></a>00062     q-&gt;w *= s;
+<a name="l00063"></a>00063     q-&gt;x *= s;
+<a name="l00064"></a>00064     q-&gt;y *= s;
+<a name="l00065"></a>00065     q-&gt;z *= s;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 
+<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00074"></a><a class="code" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">00074</a> <a class="code" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rsQuaternionAdd</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
+<a name="l00075"></a>00075     q-&gt;w *= rhs-&gt;w;
+<a name="l00076"></a>00076     q-&gt;x *= rhs-&gt;x;
+<a name="l00077"></a>00077     q-&gt;y *= rhs-&gt;y;
+<a name="l00078"></a>00078     q-&gt;z *= rhs-&gt;z;
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 
+<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00090"></a><a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">00090</a> <a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
+<a name="l00091"></a>00091     rot *= (float)(M_PI / 180.0f) * 0.5f;
+<a name="l00092"></a>00092     <span class="keywordtype">float</span> c = <a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>(rot);
+<a name="l00093"></a>00093     <span class="keywordtype">float</span> s = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(rot);
+<a name="l00094"></a>00094 
+<a name="l00095"></a>00095     q-&gt;w = c;
+<a name="l00096"></a>00096     q-&gt;x = x * s;
+<a name="l00097"></a>00097     q-&gt;y = y * s;
+<a name="l00098"></a>00098     q-&gt;z = z * s;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 
+<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00111"></a><a class="code" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">00111</a> <a class="code" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rsQuaternionLoadRotate</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
+<a name="l00112"></a>00112     <span class="keyword">const</span> <span class="keywordtype">float</span> len = x*x + y*y + z*z;
+<a name="l00113"></a>00113     <span class="keywordflow">if</span> (len != 1) {
+<a name="l00114"></a>00114         <span class="keyword">const</span> <span class="keywordtype">float</span> recipLen = 1.f / <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(len);
+<a name="l00115"></a>00115         x *= recipLen;
+<a name="l00116"></a>00116         y *= recipLen;
+<a name="l00117"></a>00117         z *= recipLen;
+<a name="l00118"></a>00118     }
+<a name="l00119"></a>00119     <a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a>(q, rot, x, y, z);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 
+<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00127"></a><a class="code" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">00127</a> <a class="code" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rsQuaternionConjugate</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
+<a name="l00128"></a>00128     q-&gt;x = -q-&gt;x;
+<a name="l00129"></a>00129     q-&gt;y = -q-&gt;y;
+<a name="l00130"></a>00130     q-&gt;z = -q-&gt;z;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keywordtype">float</span>
+<a name="l00140"></a><a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">00140</a> <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(<span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1) {
+<a name="l00141"></a>00141     <span class="keywordflow">return</span> q0-&gt;w*q1-&gt;w + q0-&gt;x*q1-&gt;x + q0-&gt;y*q1-&gt;y + q0-&gt;z*q1-&gt;z;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 
+<a name="l00148"></a>00148 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00149"></a><a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">00149</a> <a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
+<a name="l00150"></a>00150     <span class="keyword">const</span> <span class="keywordtype">float</span> len = <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(q, q);
+<a name="l00151"></a>00151     <span class="keywordflow">if</span> (len != 1) {
+<a name="l00152"></a>00152         <span class="keyword">const</span> <span class="keywordtype">float</span> recipLen = 1.f / <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(len);
+<a name="l00153"></a>00153         <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(q, recipLen);
+<a name="l00154"></a>00154     }
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 
+<a name="l00162"></a>00162 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
+<a name="l00163"></a><a class="code" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">00163</a> <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
+<a name="l00164"></a>00164     <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> qtmp;
+<a name="l00165"></a>00165     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;qtmp, q);
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     q-&gt;w = qtmp.w*rhs-&gt;w - qtmp.x*rhs-&gt;x - qtmp.y*rhs-&gt;y - qtmp.z*rhs-&gt;z;
+<a name="l00168"></a>00168     q-&gt;x = qtmp.w*rhs-&gt;x + qtmp.x*rhs-&gt;w + qtmp.y*rhs-&gt;z - qtmp.z*rhs-&gt;y;
+<a name="l00169"></a>00169     q-&gt;y = qtmp.w*rhs-&gt;y + qtmp.y*rhs-&gt;w + qtmp.z*rhs-&gt;x - qtmp.x*rhs-&gt;z;
+<a name="l00170"></a>00170     q-&gt;z = qtmp.w*rhs-&gt;z + qtmp.z*rhs-&gt;w + qtmp.x*rhs-&gt;y - qtmp.y*rhs-&gt;x;
+<a name="l00171"></a>00171     <a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a>(q);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173 
+<a name="l00181"></a>00181 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00182"></a><a class="code" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">00182</a> <a class="code" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rsQuaternionSlerp</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1, <span class="keywordtype">float</span> t) {
+<a name="l00183"></a>00183     <span class="keywordflow">if</span> (t &lt;= 0.0f) {
+<a name="l00184"></a>00184         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, q0);
+<a name="l00185"></a>00185         <span class="keywordflow">return</span>;
+<a name="l00186"></a>00186     }
+<a name="l00187"></a>00187     <span class="keywordflow">if</span> (t &gt;= 1.0f) {
+<a name="l00188"></a>00188         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, q1);
+<a name="l00189"></a>00189         <span class="keywordflow">return</span>;
+<a name="l00190"></a>00190     }
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192     <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> tempq0, tempq1;
+<a name="l00193"></a>00193     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq0, q0);
+<a name="l00194"></a>00194     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq1, q1);
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196     <span class="keywordtype">float</span> angle = <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(q0, q1);
+<a name="l00197"></a>00197     <span class="keywordflow">if</span> (angle &lt; 0) {
+<a name="l00198"></a>00198         <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(&amp;tempq0, -1.0f);
+<a name="l00199"></a>00199         angle *= -1.0f;
+<a name="l00200"></a>00200     }
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202     <span class="keywordtype">float</span> scale, invScale;
+<a name="l00203"></a>00203     <span class="keywordflow">if</span> (angle + 1.0f &gt; 0.05f) {
+<a name="l00204"></a>00204         <span class="keywordflow">if</span> (1.0f - angle &gt;= 0.05f) {
+<a name="l00205"></a>00205             <span class="keywordtype">float</span> theta = <a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>(angle);
+<a name="l00206"></a>00206             <span class="keywordtype">float</span> invSinTheta = 1.0f / <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta);
+<a name="l00207"></a>00207             scale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta * (1.0f - t)) * invSinTheta;
+<a name="l00208"></a>00208             invScale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta * t) * invSinTheta;
+<a name="l00209"></a>00209         } <span class="keywordflow">else</span> {
+<a name="l00210"></a>00210             scale = 1.0f - t;
+<a name="l00211"></a>00211             invScale = t;
+<a name="l00212"></a>00212         }
+<a name="l00213"></a>00213     } <span class="keywordflow">else</span> {
+<a name="l00214"></a>00214         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq1, tempq0.z, -tempq0.y, tempq0.x, -tempq0.w);
+<a name="l00215"></a>00215         scale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(M_PI * (0.5f - t));
+<a name="l00216"></a>00216         invScale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(M_PI * t);
+<a name="l00217"></a>00217     }
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, tempq0.w*scale + tempq1.w*invScale, tempq0.x*scale + tempq1.x*invScale,
+<a name="l00220"></a>00220                         tempq0.y*scale + tempq1.y*invScale, tempq0.z*scale + tempq1.z*invScale);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 
+<a name="l00228"></a><a class="code" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">00228</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rsQuaternionGetMatrixUnit</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
+<a name="l00229"></a>00229     <span class="keywordtype">float</span> xx = q-&gt;x * q-&gt;x;
+<a name="l00230"></a>00230     <span class="keywordtype">float</span> xy = q-&gt;x * q-&gt;y;
+<a name="l00231"></a>00231     <span class="keywordtype">float</span> xz = q-&gt;x * q-&gt;z;
+<a name="l00232"></a>00232     <span class="keywordtype">float</span> xw = q-&gt;x * q-&gt;w;
+<a name="l00233"></a>00233     <span class="keywordtype">float</span> yy = q-&gt;y * q-&gt;y;
+<a name="l00234"></a>00234     <span class="keywordtype">float</span> yz = q-&gt;y * q-&gt;z;
+<a name="l00235"></a>00235     <span class="keywordtype">float</span> yw = q-&gt;y * q-&gt;w;
+<a name="l00236"></a>00236     <span class="keywordtype">float</span> zz = q-&gt;z * q-&gt;z;
+<a name="l00237"></a>00237     <span class="keywordtype">float</span> zw = q-&gt;z * q-&gt;w;
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239     m-&gt;m[0]  = 1.0f - 2.0f * ( yy + zz );
+<a name="l00240"></a>00240     m-&gt;m[4]  =        2.0f * ( xy - zw );
+<a name="l00241"></a>00241     m-&gt;m[8]  =        2.0f * ( xz + yw );
+<a name="l00242"></a>00242     m-&gt;m[1]  =        2.0f * ( xy + zw );
+<a name="l00243"></a>00243     m-&gt;m[5]  = 1.0f - 2.0f * ( xx + zz );
+<a name="l00244"></a>00244     m-&gt;m[9]  =        2.0f * ( yz - xw );
+<a name="l00245"></a>00245     m-&gt;m[2]  =        2.0f * ( xz - yw );
+<a name="l00246"></a>00246     m-&gt;m[6]  =        2.0f * ( yz + xw );
+<a name="l00247"></a>00247     m-&gt;m[10] = 1.0f - 2.0f * ( xx + yy );
+<a name="l00248"></a>00248     m-&gt;m[3]  = m-&gt;m[7] = m-&gt;m[11] = m-&gt;m[12] = m-&gt;m[13] = m-&gt;m[14] = 0.0f;
+<a name="l00249"></a>00249     m-&gt;m[15] = 1.0f;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252 <span class="preprocessor">#endif</span>
+<a name="l00253"></a>00253 <span class="preprocessor"></span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__time_8rsh.html b/docs/html/reference/renderscript/rs__time_8rsh.html
new file mode 100644
index 0000000..34ac9cd
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__time_8rsh.html
@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html">rs_tm</a></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rsTime</a> (<a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__tm.html">rs_tm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rsLocaltime</a> (<a class="el" href="structrs__tm.html">rs_tm</a> *local, const <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rsUptimeMillis</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rsUptimeNanos</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rsGetDt</a> (void)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Renderscript time routines. </p>
+<p>This file contains Renderscript functions relating to time and date manipulation. </p>
+
+<p>Definition in file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
+</div><hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="ad2b4759a0a6a98bd79b7ad82a4b057d6"></a><!-- doxytag: member="rs_time.rsh::rs_time_t" ref="ad2b4759a0a6a98bd79b7ad82a4b057d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on January 1, 1970, Coordinated Universal Time (UTC)). </p>
+
+<p>Definition at line <a class="el" href="rs__time_8rsh_source.html#l00031">31</a> of file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="adea2682186fd903752431ad848bd8bf4"></a><!-- doxytag: member="rs_time.rsh::rsGetDt" ref="adea2682186fd903752431ad848bd8bf4" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float rsGetDt </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the time in seconds since this function was last called in this script.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Time in seconds. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a08a8fcadae964f7416aef487da624110"></a><!-- doxytag: member="rs_time.rsh::rsLocaltime" ref="a08a8fcadae964f7416aef487da624110" args="(rs_tm *local, const rs_time_t *timer)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structrs__tm.html">rs_tm</a>* rsLocaltime </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structrs__tm.html">rs_tm</a> *&#160;</td>
+          <td class="paramname"><em>local</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *&#160;</td>
+          <td class="paramname"><em>timer</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Converts the time specified by <code>timer</code> into broken-down time and stores it in <code>local</code>. This function also returns a pointer to <code>local</code>. If <code>local</code> is NULL, this function does nothing and returns NULL.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">local</td><td>Broken-down time. </td></tr>
+    <tr><td class="paramname">timer</td><td>Input time as calendar time.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Pointer to broken-down time (same as input <code>local</code>). </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a555f9324acb8c3d0c6f09a1d05478ce2"></a><!-- doxytag: member="rs_time.rsh::rsTime" ref="a555f9324acb8c3d0c6f09a1d05478ce2" args="(rs_time_t *timer)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> rsTime </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *&#160;</td>
+          <td class="paramname"><em>timer</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, 1970). If <code>timer</code> is non-NULL, the result is also stored in the memory pointed to by this variable. If an error occurs, a value of -1 is returned.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">timer</td><td>Location to also store the returned calendar time.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Seconds since the Epoch. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3c406e51a769718dd1c760518b9cad44"></a><!-- doxytag: member="rs_time.rsh::rsUptimeMillis" ref="a3c406e51a769718dd1c760518b9cad44" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> rsUptimeMillis </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the current system clock (uptime) in milliseconds.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Uptime in milliseconds. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a24e2cc12acf1e7fdd857d1a48981395d"></a><!-- doxytag: member="rs_time.rsh::rsUptimeNanos" ref="a24e2cc12acf1e7fdd857d1a48981395d" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> rsUptimeNanos </td>
+          <td>(</td>
+          <td class="paramtype">void&#160;</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Returns the current system clock (uptime) in nanoseconds.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Uptime in nanoseconds. </dd></dl>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__time_8rsh_source.html b/docs/html/reference/renderscript/rs__time_8rsh_source.html
new file mode 100644
index 0000000..1c5c74b
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__time_8rsh_source.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_time.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__time_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_TIME_RSH__</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_TIME_RSH__</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span>
+<a name="l00031"></a><a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">00031</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a>;
+<a name="l00032"></a>00032 
+<a name="l00049"></a><a class="code" href="structrs__tm.html">00049</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00050"></a><a class="code" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e">00050</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e" title="seconds">tm_sec</a>;     
+<a name="l00051"></a><a class="code" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b">00051</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b" title="minutes">tm_min</a>;     
+<a name="l00052"></a><a class="code" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a">00052</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a" title="hours">tm_hour</a>;    
+<a name="l00053"></a><a class="code" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15">00053</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15" title="day of the month">tm_mday</a>;    
+<a name="l00054"></a><a class="code" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832">00054</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832" title="month">tm_mon</a>;     
+<a name="l00055"></a><a class="code" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2">00055</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2" title="year">tm_year</a>;    
+<a name="l00056"></a><a class="code" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4">00056</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4" title="day of the week">tm_wday</a>;    
+<a name="l00057"></a><a class="code" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0">00057</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0" title="day of the year">tm_yday</a>;    
+<a name="l00058"></a><a class="code" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111">00058</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111" title="daylight savings time">tm_isdst</a>;   
+<a name="l00059"></a>00059 } <a class="code" href="structrs__tm.html">rs_tm</a>;
+<a name="l00060"></a>00060 
+<a name="l00070"></a>00070 <span class="keyword">extern</span> <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> __attribute__((overloadable))
+<a name="l00071"></a>00071     <a class="code" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rsTime</a>(<a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer);
+<a name="l00072"></a>00072 
+<a name="l00083"></a>00083 extern <a class="code" href="structrs__tm.html">rs_tm</a> * __attribute__((overloadable))
+<a name="l00084"></a>00084     <a class="code" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rsLocaltime</a>(<a class="code" href="structrs__tm.html">rs_tm</a> *local, const <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer);
+<a name="l00085"></a>00085 
+<a name="l00091"></a>00091 extern <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> __attribute__((overloadable))
+<a name="l00092"></a>00092     <a class="code" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rsUptimeMillis</a>(<span class="keywordtype">void</span>);
+<a name="l00093"></a>00093 
+<a name="l00099"></a>00099 extern <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> __attribute__((overloadable))
+<a name="l00100"></a>00100     <a class="code" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rsUptimeNanos</a>(<span class="keywordtype">void</span>);
+<a name="l00101"></a>00101 
+<a name="l00108"></a>00108 extern <span class="keywordtype">float</span> __attribute__((overloadable))
+<a name="l00109"></a>00109     <a class="code" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rsGetDt</a>(<span class="keywordtype">void</span>);
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh.html b/docs/html/reference/renderscript/rs__types_8rsh.html
new file mode 100644
index 0000000..bd601f2
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__types_8rsh.html
@@ -0,0 +1,846 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#typedef-members">Typedefs</a>  </div>
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include &quot;stdbool.h&quot;</code><br/>
+</div><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__element.html">rs_element</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript element.  <a href="structrs__element.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__type.html">rs_type</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript type.  <a href="structrs__type.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__allocation.html">rs_allocation</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript allocation.  <a href="structrs__allocation.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__sampler.html">rs_sampler</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript sampler object.  <a href="structrs__sampler.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__script.html">rs_script</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript script object.  <a href="structrs__script.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__mesh.html">rs_mesh</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript mesh object.  <a href="structrs__mesh.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript ProgramFragment object.  <a href="structrs__program__fragment.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript ProgramVertex object.  <a href="structrs__program__vertex.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__raster.html">rs_program_raster</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript ProgramRaster object.  <a href="structrs__program__raster.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__store.html">rs_program_store</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript ProgramStore object.  <a href="structrs__program__store.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__font.html">rs_font</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a Renderscript font object.  <a href="structrs__font.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">4x4 float matrix  <a href="structrs__matrix4x4.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3x3 float matrix  <a href="structrs__matrix3x3.html#details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">2x2 float matrix  <a href="structrs__matrix2x2.html#details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Define the standard Renderscript types</p>
+<p>Integers 8 bit: char, int8_t 16 bit: short, int16_t 32 bit: int, in32_t 64 bit: long, long long, int64_t</p>
+<p>Unsigned Integers 8 bit: uchar, uint8_t 16 bit: ushort, uint16_t 32 bit: uint, uint32_t 64 bit: ulong, uint64_t</p>
+<p>Floating point 32 bit: float 64 bit: double</p>
+<p>Vectors of length 2, 3, and 4 are supported for all the types above. </p>
+
+<p>Definition in file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="ac532b4c1895c8bd4fb75dc370c484351"></a><!-- doxytag: member="rs_types.rsh::char2" ref="ac532b4c1895c8bd4fb75dc370c484351" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic char type. Provides two char fields packed into a single 16 bit field with 16 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00273">273</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4617fb31f4c03402515efee0a9b56210"></a><!-- doxytag: member="rs_types.rsh::char3" ref="a4617fb31f4c03402515efee0a9b56210" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic char type. Provides three char fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00278">278</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecb498648daac97c7cc5f31c242dfa03"></a><!-- doxytag: member="rs_types.rsh::char4" ref="aecb498648daac97c7cc5f31c242dfa03" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic char type. Provides four char fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00283">283</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a75ef868cedebc2a6eeb1bc6ca6ca49c3"></a><!-- doxytag: member="rs_types.rsh::double2" ref="a75ef868cedebc2a6eeb1bc6ca6ca49c3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic double type. Provides two double fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00193">193</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa3c90d5a23d674185a13e95402eda7eb"></a><!-- doxytag: member="rs_types.rsh::double3" ref="aa3c90d5a23d674185a13e95402eda7eb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic double type. Provides three double fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00198">198</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a60f4b04e076f0dd0ecc99c365fc4ca21"></a><!-- doxytag: member="rs_types.rsh::double4" ref="a60f4b04e076f0dd0ecc99c365fc4ca21" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic double type. Provides four double fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00203">203</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5086d0fcb71f916c936af486ccf0dd41"></a><!-- doxytag: member="rs_types.rsh::float2" ref="a5086d0fcb71f916c936af486ccf0dd41" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic float type. Provides two float fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00176">176</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0046fa0f208d0899adbcf1f8b5aafadd"></a><!-- doxytag: member="rs_types.rsh::float3" ref="a0046fa0f208d0899adbcf1f8b5aafadd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic float type. Provides three float fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00181">181</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adb5162dc168ddd471d948faa60b37c5e"></a><!-- doxytag: member="rs_types.rsh::float4" ref="adb5162dc168ddd471d948faa60b37c5e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic float type. Provides four float fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00187">187</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa343fa3b3d06292b959ffdd4c4703b06"></a><!-- doxytag: member="rs_types.rsh::int16_t" ref="aa343fa3b3d06292b959ffdd4c4703b06" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>16 bit integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00054">54</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6bc1fa1354fe2145b8f12b4bbfafcf4c"></a><!-- doxytag: member="rs_types.rsh::int2" ref="a6bc1fa1354fe2145b8f12b4bbfafcf4c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic int type. Provides two int fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00305">305</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad5512266b63fd06dcf450f6c9d5326c8"></a><!-- doxytag: member="rs_types.rsh::int3" ref="ad5512266b63fd06dcf450f6c9d5326c8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic int type. Provides three int fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00310">310</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a32f2e37ee053cf2ce8ca28d1f74630e5"></a><!-- doxytag: member="rs_types.rsh::int32_t" ref="a32f2e37ee053cf2ce8ca28d1f74630e5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>32 bit integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00058">58</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a897deab71f679999ed99d4153c797e70"></a><!-- doxytag: member="rs_types.rsh::int4" ref="a897deab71f679999ed99d4153c797e70" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic int type. Provides two four fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00315">315</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a996e72f71b11a5bb8b3b7b6936b1516d"></a><!-- doxytag: member="rs_types.rsh::int64_t" ref="a996e72f71b11a5bb8b3b7b6936b1516d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef long long <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>64 bit integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00062">62</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad566f6541e98b74246db1a3a3a85ad49"></a><!-- doxytag: member="rs_types.rsh::int8_t" ref="ad566f6541e98b74246db1a3a3a85ad49" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>8 bit integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00050">50</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd55d62cee0785034b73375acd0df9da"></a><!-- doxytag: member="rs_types.rsh::long2" ref="afd55d62cee0785034b73375acd0df9da" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic long type. Provides two long fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00321">321</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad9cedbf4050fad14138d1dcb3428ec18"></a><!-- doxytag: member="rs_types.rsh::long3" ref="ad9cedbf4050fad14138d1dcb3428ec18" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic long type. Provides three long fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00326">326</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae177e4918f36e5c9da36d524cdb7a2e7"></a><!-- doxytag: member="rs_types.rsh::long4" ref="ae177e4918f36e5c9da36d524cdb7a2e7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic long type. Provides four long fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00331">331</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a86f99f382dc35fc8ad98b524fe6d5447"></a><!-- doxytag: member="rs_types.rsh::rs_quaternion" ref="a86f99f382dc35fc8ad98b524fe6d5447" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>quaternion type for use with the quaternion functions </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00364">364</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a303d3ad18aaeacfcfeda2b8580b98796"></a><!-- doxytag: member="rs_types.rsh::short2" ref="a303d3ad18aaeacfcfeda2b8580b98796" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic short type. Provides two short fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00289">289</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f4967691ae2b249511b5f3dd9e18793"></a><!-- doxytag: member="rs_types.rsh::short3" ref="a3f4967691ae2b249511b5f3dd9e18793" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic short type. Provides three short fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00294">294</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a198219da0b1d51c8d7f8f12aad7e502d"></a><!-- doxytag: member="rs_types.rsh::short4" ref="a198219da0b1d51c8d7f8f12aad7e502d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic short type. Provides four short fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00299">299</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a29d85914ddff32967d85ada69854206d"></a><!-- doxytag: member="rs_types.rsh::size_t" ref="a29d85914ddff32967d85ada69854206d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Typedef for unsigned int </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00098">98</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a170745d0d946e79c4c2a056d1d158996"></a><!-- doxytag: member="rs_types.rsh::ssize_t" ref="a170745d0d946e79c4c2a056d1d158996" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Typedef for int (use for 32-bit integers) </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00102">102</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a27c902d5ca78afa82d5ed75554d5cedc"></a><!-- doxytag: member="rs_types.rsh::uchar" ref="a27c902d5ca78afa82d5ed75554d5cedc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>8 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00082">82</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aff5eb7cd53a34bb01924bf64485296de"></a><!-- doxytag: member="rs_types.rsh::uchar2" ref="aff5eb7cd53a34bb01924bf64485296de" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uchar type. Provides two uchar fields packed into a single 16 bit field with 16 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00209">209</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a247b5eacf2b662849668cbc33120343f"></a><!-- doxytag: member="rs_types.rsh::uchar3" ref="a247b5eacf2b662849668cbc33120343f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uchar type. Provides three uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00214">214</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae6ed52a87d4ff920c303b13b00f7396d"></a><!-- doxytag: member="rs_types.rsh::uchar4" ref="ae6ed52a87d4ff920c303b13b00f7396d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uchar type. Provides four uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00219">219</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f5fce8c1ef282264f9214809524d836"></a><!-- doxytag: member="rs_types.rsh::uint" ref="a4f5fce8c1ef282264f9214809524d836" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>32 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00090">90</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a273cf69d639a59973b6019625df33e30"></a><!-- doxytag: member="rs_types.rsh::uint16_t" ref="a273cf69d639a59973b6019625df33e30" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef unsigned short <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>16 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00070">70</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf90cd1f01a121e824fc6e1b927e7683"></a><!-- doxytag: member="rs_types.rsh::uint2" ref="aaf90cd1f01a121e824fc6e1b927e7683" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uint type. Provides two uint fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00241">241</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae80e36ac834c891aa76b09a220344e78"></a><!-- doxytag: member="rs_types.rsh::uint3" ref="ae80e36ac834c891aa76b09a220344e78" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uint type. Provides three uint fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00246">246</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a435d1572bf3f880d55459d9805097f62"></a><!-- doxytag: member="rs_types.rsh::uint32_t" ref="a435d1572bf3f880d55459d9805097f62" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef unsigned int <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>32 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00074">74</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad92f0ec6c2cdc1f11a6d7fe321047462"></a><!-- doxytag: member="rs_types.rsh::uint4" ref="ad92f0ec6c2cdc1f11a6d7fe321047462" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic uint type. Provides four uint fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00251">251</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa5d1cd013383c889537491c3cfd9aad"></a><!-- doxytag: member="rs_types.rsh::uint64_t" ref="aaa5d1cd013383c889537491c3cfd9aad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef unsigned long long <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>64 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00078">78</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aba7bc1797add20fe3efdf37ced1182c5"></a><!-- doxytag: member="rs_types.rsh::uint8_t" ref="aba7bc1797add20fe3efdf37ced1182c5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef unsigned char <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>8 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00066">66</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab46637ef82283186e57f54756fe67203"></a><!-- doxytag: member="rs_types.rsh::ulong" ref="ab46637ef82283186e57f54756fe67203" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a> <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Typedef for unsigned long (use for 64-bit unsigned integers) </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00094">94</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a56988b12ab16acf753356f7a5c70565a"></a><!-- doxytag: member="rs_types.rsh::ulong2" ref="a56988b12ab16acf753356f7a5c70565a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ulong type. Provides two ulong fields packed into a single 128 bit field with 128 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00257">257</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac623a569c28935fbedd3a8ed27ae0696"></a><!-- doxytag: member="rs_types.rsh::ulong3" ref="ac623a569c28935fbedd3a8ed27ae0696" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ulong type. Provides three ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00262">262</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3029c54b8e1779a1ddbdfe875432d137"></a><!-- doxytag: member="rs_types.rsh::ulong4" ref="a3029c54b8e1779a1ddbdfe875432d137" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ulong type. Provides four ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00267">267</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e58a7bf060b7a5fbf6a401d3020adca"></a><!-- doxytag: member="rs_types.rsh::ushort" ref="a9e58a7bf060b7a5fbf6a401d3020adca" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>16 bit unsigned integer type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00086">86</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a24a9d78cfc32475e2c6eb1cdec239bf2"></a><!-- doxytag: member="rs_types.rsh::ushort2" ref="a24a9d78cfc32475e2c6eb1cdec239bf2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ushort type. Provides two ushort fields packed into a single 32 bit field with 32 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00225">225</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab78391445785d2ca0276392a9c97fcba"></a><!-- doxytag: member="rs_types.rsh::ushort3" ref="ab78391445785d2ca0276392a9c97fcba" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ushort type. Provides three ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00230">230</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a77a09fa01d7fc721bbc44c32aac2d487"></a><!-- doxytag: member="rs_types.rsh::ushort4" ref="a77a09fa01d7fc721bbc44c32aac2d487" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Vector version of the basic ushort type. Provides four ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00235">235</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+
+</div>
+</div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh_source.html b/docs/html/reference/renderscript/rs__types_8rsh_source.html
new file mode 100644
index 0000000..96c55e1
--- /dev/null
+++ b/docs/html/reference/renderscript/rs__types_8rsh_source.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+      <li><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">/src/ics-mr1/frameworks/base/libs/rs/scriptc/rs_types.rsh</div>  </div>
+</div>
+<div class="contents">
+<a href="rs__types_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
+<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
+<a name="l00003"></a>00003 <span class="comment"> *</span>
+<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
+<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
+<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
+<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
+<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
+<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
+<a name="l00015"></a>00015 <span class="comment"> */</span>
+<a name="l00016"></a>00016 
+<a name="l00041"></a>00041 <span class="preprocessor">#ifndef __RS_TYPES_RSH__</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define __RS_TYPES_RSH__</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span>
+<a name="l00044"></a>00044 <span class="preprocessor">#define M_PI        3.14159265358979323846264338327950288f   </span><span class="comment">/* pi */</span>
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="preprocessor">#include &quot;stdbool.h&quot;</span>
+<a name="l00050"></a><a class="code" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">00050</a> <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a>;
+<a name="l00054"></a><a class="code" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">00054</a> <span class="keyword">typedef</span> <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a>;
+<a name="l00058"></a><a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">00058</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>;
+<a name="l00062"></a><a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">00062</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>;
+<a name="l00066"></a><a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">00066</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>;
+<a name="l00070"></a><a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">00070</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a>;
+<a name="l00074"></a><a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">00074</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>;
+<a name="l00078"></a><a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">00078</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a>;
+<a name="l00082"></a><a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">00082</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>;
+<a name="l00086"></a><a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">00086</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>;
+<a name="l00090"></a><a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">00090</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>;
+<a name="l00094"></a><a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">00094</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a> <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>;
+<a name="l00098"></a><a class="code" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">00098</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="code" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a>;
+<a name="l00102"></a><a class="code" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">00102</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> <a class="code" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a>;
+<a name="l00103"></a>00103 
+<a name="l00109"></a><a class="code" href="structrs__element.html">00109</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__element.html" title="Opaque handle to a Renderscript element.">rs_element</a>;
+<a name="l00115"></a><a class="code" href="structrs__type.html">00115</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__type.html" title="Opaque handle to a Renderscript type.">rs_type</a>;
+<a name="l00121"></a><a class="code" href="structrs__allocation.html">00121</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>;
+<a name="l00127"></a><a class="code" href="structrs__sampler.html">00127</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>;
+<a name="l00133"></a><a class="code" href="structrs__script.html">00133</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__script.html" title="Opaque handle to a Renderscript script object.">rs_script</a>;
+<a name="l00139"></a><a class="code" href="structrs__mesh.html">00139</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a>;
+<a name="l00145"></a><a class="code" href="structrs__program__fragment.html">00145</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>;
+<a name="l00151"></a><a class="code" href="structrs__program__vertex.html">00151</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a>;
+<a name="l00157"></a><a class="code" href="structrs__program__raster.html">00157</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a>;
+<a name="l00163"></a><a class="code" href="structrs__program__store.html">00163</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a>;
+<a name="l00169"></a><a class="code" href="structrs__font.html">00169</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a>;
+<a name="l00170"></a>00170 
+<a name="l00176"></a><a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">00176</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((ext_vector_type(2)));
+<a name="l00181"></a><a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">00181</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((ext_vector_type(3)));
+<a name="l00187"></a><a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">00187</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((ext_vector_type(4)));
+<a name="l00188"></a>00188 
+<a name="l00193"></a><a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">00193</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a> __attribute__((ext_vector_type(2)));
+<a name="l00198"></a><a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">00198</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a> __attribute__((ext_vector_type(3)));
+<a name="l00203"></a><a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">00203</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a> __attribute__((ext_vector_type(4)));
+<a name="l00204"></a>00204 
+<a name="l00209"></a><a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">00209</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> __attribute__((ext_vector_type(2)));
+<a name="l00214"></a><a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">00214</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a> __attribute__((ext_vector_type(3)));
+<a name="l00219"></a><a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">00219</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((ext_vector_type(4)));
+<a name="l00220"></a>00220 
+<a name="l00225"></a><a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">00225</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a> __attribute__((ext_vector_type(2)));
+<a name="l00230"></a><a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">00230</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a> __attribute__((ext_vector_type(3)));
+<a name="l00235"></a><a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">00235</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a> __attribute__((ext_vector_type(4)));
+<a name="l00236"></a>00236 
+<a name="l00241"></a><a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">00241</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a> __attribute__((ext_vector_type(2)));
+<a name="l00246"></a><a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">00246</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a> __attribute__((ext_vector_type(3)));
+<a name="l00251"></a><a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">00251</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a> __attribute__((ext_vector_type(4)));
+<a name="l00252"></a>00252 
+<a name="l00257"></a><a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">00257</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a> __attribute__((ext_vector_type(2)));
+<a name="l00262"></a><a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">00262</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a> __attribute__((ext_vector_type(3)));
+<a name="l00267"></a><a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">00267</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a> __attribute__((ext_vector_type(4)));
+<a name="l00268"></a>00268 
+<a name="l00273"></a><a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">00273</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a> __attribute__((ext_vector_type(2)));
+<a name="l00278"></a><a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">00278</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a> __attribute__((ext_vector_type(3)));
+<a name="l00283"></a><a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">00283</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a> __attribute__((ext_vector_type(4)));
+<a name="l00284"></a>00284 
+<a name="l00289"></a><a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">00289</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a> __attribute__((ext_vector_type(2)));
+<a name="l00294"></a><a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">00294</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a> __attribute__((ext_vector_type(3)));
+<a name="l00299"></a><a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">00299</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a> __attribute__((ext_vector_type(4)));
+<a name="l00300"></a>00300 
+<a name="l00305"></a><a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">00305</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a> __attribute__((ext_vector_type(2)));
+<a name="l00310"></a><a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">00310</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a> __attribute__((ext_vector_type(3)));
+<a name="l00315"></a><a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">00315</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a> __attribute__((ext_vector_type(4)));
+<a name="l00316"></a>00316 
+<a name="l00321"></a><a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">00321</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a> __attribute__((ext_vector_type(2)));
+<a name="l00326"></a><a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">00326</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a> __attribute__((ext_vector_type(3)));
+<a name="l00331"></a><a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">00331</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a> __attribute__((ext_vector_type(4)));
+<a name="l00332"></a>00332 
+<a name="l00339"></a><a class="code" href="structrs__matrix4x4.html">00339</a> typedef struct {
+<a name="l00340"></a>00340     <span class="keywordtype">float</span> m[16];
+<a name="l00341"></a>00341 } <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>;
+<a name="l00348"></a><a class="code" href="structrs__matrix3x3.html">00348</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00349"></a>00349     <span class="keywordtype">float</span> m[9];
+<a name="l00350"></a>00350 } <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a>;
+<a name="l00357"></a><a class="code" href="structrs__matrix2x2.html">00357</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00358"></a>00358     <span class="keywordtype">float</span> m[4];
+<a name="l00359"></a>00359 } <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a>;
+<a name="l00360"></a>00360 
+<a name="l00364"></a><a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">00364</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a>;
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366 <span class="preprocessor">#define RS_PACKED __attribute__((packed, aligned(4)))</span>
+<a name="l00367"></a>00367 <span class="preprocessor"></span><span class="preprocessor">#define NULL ((const void *)0)</span>
+<a name="l00368"></a>00368 <span class="preprocessor"></span>
+<a name="l00369"></a>00369 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
+<a name="l00370"></a>00370 <span class="preprocessor"></span>
+<a name="l00374"></a>00374 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00375"></a>00375     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
+<a name="l00376"></a>00376     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
+<a name="l00377"></a>00377     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
+<a name="l00378"></a>00378     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
+<a name="l00379"></a>00379     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
+<a name="l00380"></a>00380     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
+<a name="l00381"></a>00381 } rs_allocation_cubemap_face;
+<a name="l00382"></a>00382 
+<a name="l00389"></a>00389 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00390"></a>00390     RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
+<a name="l00391"></a>00391     RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
+<a name="l00392"></a>00392     RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
+<a name="l00393"></a>00393     RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
+<a name="l00394"></a>00394     RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
+<a name="l00395"></a>00395 } rs_allocation_usage_type;
+<a name="l00396"></a>00396 
+<a name="l00397"></a>00397 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span>
+<a name="l00399"></a>00399 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__allocation.html b/docs/html/reference/renderscript/structrs__allocation.html
new file mode 100644
index 0000000..b166fdd
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__allocation.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_allocation Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_allocation Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_allocation" -->
+<p>Opaque handle to a Renderscript allocation.  
+ <a href="structrs__allocation.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript allocation. </p>
+<p>See: android.renderscript.Allocation </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00121">121</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__element.html b/docs/html/reference/renderscript/structrs__element.html
new file mode 100644
index 0000000..79cd090
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__element.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_element Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_element Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_element" -->
+<p>Opaque handle to a Renderscript element.  
+ <a href="structrs__element.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript element. </p>
+<p>See: android.renderscript.Element </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00109">109</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__font.html b/docs/html/reference/renderscript/structrs__font.html
new file mode 100644
index 0000000..83eb649
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__font.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_font Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_font Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_font" -->
+<p>Opaque handle to a Renderscript font object.  
+ <a href="structrs__font.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript font object. </p>
+<p>See: android.renderscript.Font </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00169">169</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix2x2.html b/docs/html/reference/renderscript/structrs__matrix2x2.html
new file mode 100644
index 0000000..8789066d
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__matrix2x2.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_matrix2x2 Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_matrix2x2 Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_matrix2x2" -->
+<p>2x2 float matrix  
+ <a href="structrs__matrix2x2.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>2x2 float matrix </p>
+<p>Native holder for RS matrix. Elements are stored in the array at the location [row*2 + col] </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00357">357</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix3x3.html b/docs/html/reference/renderscript/structrs__matrix3x3.html
new file mode 100644
index 0000000..2b036df
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__matrix3x3.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_matrix3x3 Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_matrix3x3 Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_matrix3x3" -->
+<p>3x3 float matrix  
+ <a href="structrs__matrix3x3.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>3x3 float matrix </p>
+<p>Native holder for RS matrix. Elements are stored in the array at the location [row*3 + col] </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00348">348</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix4x4.html b/docs/html/reference/renderscript/structrs__matrix4x4.html
new file mode 100644
index 0000000..c696108
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__matrix4x4.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_matrix4x4 Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_matrix4x4 Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_matrix4x4" -->
+<p>4x4 float matrix  
+ <a href="structrs__matrix4x4.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>4x4 float matrix </p>
+<p>Native holder for RS matrix. Elements are stored in the array at the location [row*4 + col] </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00339">339</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__mesh.html b/docs/html/reference/renderscript/structrs__mesh.html
new file mode 100644
index 0000000..6f58a54
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__mesh.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_mesh Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_mesh Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_mesh" -->
+<p>Opaque handle to a Renderscript mesh object.  
+ <a href="structrs__mesh.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript mesh object. </p>
+<p>See: android.renderscript.Mesh </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00139">139</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__program__fragment.html b/docs/html/reference/renderscript/structrs__program__fragment.html
new file mode 100644
index 0000000..ed8eae7
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__program__fragment.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program_fragment Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program_fragment Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_program_fragment" -->
+<p>Opaque handle to a Renderscript ProgramFragment object.  
+ <a href="structrs__program__fragment.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript ProgramFragment object. </p>
+<p>See: android.renderscript.ProgramFragment </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00145">145</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__program__raster.html b/docs/html/reference/renderscript/structrs__program__raster.html
new file mode 100644
index 0000000..a914854
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__program__raster.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program_raster Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program_raster Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_program_raster" -->
+<p>Opaque handle to a Renderscript ProgramRaster object.  
+ <a href="structrs__program__raster.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript ProgramRaster object. </p>
+<p>See: android.renderscript.ProgramRaster </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00157">157</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__program__store.html b/docs/html/reference/renderscript/structrs__program__store.html
new file mode 100644
index 0000000..6ecfece
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__program__store.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program_store Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program_store Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_program_store" -->
+<p>Opaque handle to a Renderscript ProgramStore object.  
+ <a href="structrs__program__store.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript ProgramStore object. </p>
+<p>See: android.renderscript.ProgramStore </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00163">163</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__program__vertex.html b/docs/html/reference/renderscript/structrs__program__vertex.html
new file mode 100644
index 0000000..2b145a3
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__program__vertex.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_program_vertex Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_program_vertex Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_program_vertex" -->
+<p>Opaque handle to a Renderscript ProgramVertex object.  
+ <a href="structrs__program__vertex.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript ProgramVertex object. </p>
+<p>See: android.renderscript.ProgramVertex </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00151">151</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__sampler.html b/docs/html/reference/renderscript/structrs__sampler.html
new file mode 100644
index 0000000..58ea0de
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__sampler.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_sampler Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_sampler Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_sampler" -->
+<p>Opaque handle to a Renderscript sampler object.  
+ <a href="structrs__sampler.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript sampler object. </p>
+<p>See: android.renderscript.Sampler </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00127">127</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__script.html b/docs/html/reference/renderscript/structrs__script.html
new file mode 100644
index 0000000..0946635
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__script.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_script Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_script Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_script" -->
+<p>Opaque handle to a Renderscript script object.  
+ <a href="structrs__script.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript script object. </p>
+<p>See: android.renderscript.ScriptC </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00133">133</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__script__call.html b/docs/html/reference/renderscript/structrs__script__call.html
new file mode 100644
index 0000000..9ba0681
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__script__call.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_script_call Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_script_call Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_script_call" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Structure to provide extra information to a rsForEach call. Primarly used to restrict the call to a subset of cells in the allocation. </p>
+
+<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00088">88</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__tm.html b/docs/html/reference/renderscript/structrs__tm.html
new file mode 100644
index 0000000..80f8fe9
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__tm.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_tm Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Data Fields</a>  </div>
+  <div class="headertitle">
+<div class="title">rs_tm Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_tm" --><table class="memberdecls">
+<tr><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1590aa8850370a4712da801edb8da9e"></a><!-- doxytag: member="rs_tm::tm_sec" ref="ae1590aa8850370a4712da801edb8da9e" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e">tm_sec</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">seconds <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd4bd6ccf0d1f20859ecaecf850ce85b"></a><!-- doxytag: member="rs_tm::tm_min" ref="abd4bd6ccf0d1f20859ecaecf850ce85b" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b">tm_min</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">minutes <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb46962bc20f8724567981adc3711b5a"></a><!-- doxytag: member="rs_tm::tm_hour" ref="afb46962bc20f8724567981adc3711b5a" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a">tm_hour</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hours <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac87e43828f05bf62d0c770889b81ff15"></a><!-- doxytag: member="rs_tm::tm_mday" ref="ac87e43828f05bf62d0c770889b81ff15" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15">tm_mday</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the month <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34a5466d376e405f343ed4e1592d7832"></a><!-- doxytag: member="rs_tm::tm_mon" ref="a34a5466d376e405f343ed4e1592d7832" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832">tm_mon</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">month <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74e582a615a448949969a0982d8a62d2"></a><!-- doxytag: member="rs_tm::tm_year" ref="a74e582a615a448949969a0982d8a62d2" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2">tm_year</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">year <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d40217d3cd15b51e0093db1810426e4"></a><!-- doxytag: member="rs_tm::tm_wday" ref="a4d40217d3cd15b51e0093db1810426e4" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4">tm_wday</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the week <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a589eab24c4d79f05f0b3601162ed34d0"></a><!-- doxytag: member="rs_tm::tm_yday" ref="a589eab24c4d79f05f0b3601162ed34d0" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0">tm_yday</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the year <br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cffdd224d2ea30a079a86ef1e41e111"></a><!-- doxytag: member="rs_tm::tm_isdst" ref="a8cffdd224d2ea30a079a86ef1e41e111" args="" -->
+int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111">tm_isdst</a></td></tr>
+<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">daylight savings time <br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Data structure for broken-down time components.</p>
+<p>tm_sec - Seconds after the minute. This ranges from 0 to 59, but possibly up to 60 for leap seconds. tm_min - Minutes after the hour. This ranges from 0 to 59. tm_hour - Hours past midnight. This ranges from 0 to 23. tm_mday - Day of the month. This ranges from 1 to 31. tm_mon - Months since January. This ranges from 0 to 11. tm_year - Years since 1900. tm_wday - Days since Sunday. This ranges from 0 to 6. tm_yday - Days since January 1. This ranges from 0 to 365. tm_isdst - Flag to indicate whether daylight saving time is in effect. The value is positive if it is in effect, zero if it is not, and negative if the information is not available. </p>
+
+<p>Definition at line <a class="el" href="rs__time_8rsh_source.html#l00049">49</a> of file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/structrs__type.html b/docs/html/reference/renderscript/structrs__type.html
new file mode 100644
index 0000000..f8eec3e
--- /dev/null
+++ b/docs/html/reference/renderscript/structrs__type.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+
+<title>rs_type Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+
+
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Overview</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">rs_type Struct Reference</div>  </div>
+</div>
+<div class="contents">
+<!-- doxytag: class="rs_type" -->
+<p>Opaque handle to a Renderscript type.  
+ <a href="structrs__type.html#details">More...</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Opaque handle to a Renderscript type. </p>
+<p>See: android.renderscript.Type </p>
+
+<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00115">115</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>/src/ics-mr1/frameworks/base/libs/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
+</ul>
+</div>
+
+</body>
+</html>
diff --git a/docs/html/reference/renderscript/tab_a.png b/docs/html/reference/renderscript/tab_a.png
new file mode 100644
index 0000000..2d99ef2
--- /dev/null
+++ b/docs/html/reference/renderscript/tab_a.png
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_b.png b/docs/html/reference/renderscript/tab_b.png
new file mode 100644
index 0000000..b2c3d2b
--- /dev/null
+++ b/docs/html/reference/renderscript/tab_b.png
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_h.png b/docs/html/reference/renderscript/tab_h.png
new file mode 100644
index 0000000..c11f48f
--- /dev/null
+++ b/docs/html/reference/renderscript/tab_h.png
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_s.png b/docs/html/reference/renderscript/tab_s.png
new file mode 100644
index 0000000..978943ac
--- /dev/null
+++ b/docs/html/reference/renderscript/tab_s.png
Binary files differ
diff --git a/docs/html/reference/renderscript/tabs.css b/docs/html/reference/renderscript/tabs.css
new file mode 100644
index 0000000..2192056
--- /dev/null
+++ b/docs/html/reference/renderscript/tabs.css
@@ -0,0 +1,59 @@
+.tabs, .tabs2, .tabs3 {
+    background-image: url('tab_b.png');
+    width: 100%;
+    z-index: 101;
+    font-size: 13px;
+}
+
+.tabs2 {
+    font-size: 10px;
+}
+.tabs3 {
+    font-size: 9px;
+}
+
+.tablist {
+    margin: 0;
+    padding: 0;
+    display: table;
+}
+
+.tablist li {
+    float: left;
+    display: table-cell;
+    background-image: url('tab_b.png');
+    line-height: 36px;
+    list-style: none;
+}
+
+.tablist a {
+    display: block;
+    padding: 0 20px;
+    font-weight: bold;
+    background-image:url('tab_s.png');
+    background-repeat:no-repeat;
+    background-position:right;
+    color: #283A5D;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    text-decoration: none;
+    outline: none;
+}
+
+.tabs3 .tablist a {
+    padding: 0 10px;
+}
+
+.tablist a:hover {
+    background-image: url('tab_h.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+    text-decoration: none;
+}
+
+.tablist li.current a {
+    background-image: url('tab_a.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/docs/html/sdk/android-4.0.3.jd b/docs/html/sdk/android-4.0.3.jd
index c17a422..1fca8df 100644
--- a/docs/html/sdk/android-4.0.3.jd
+++ b/docs/html/sdk/android-4.0.3.jd
@@ -58,12 +58,34 @@
 environment, refer to the "Installed Packages" listing in the Android SDK
 Manager.</p>
 
+<p class="caution"><strong>Important:</strong> To download the new Android
+4.0.x system components from the Android SDK Manager, you must first update the
+SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
+the Android 4.0.x system components will not be available for download.</p>
 
 <div class="toggle-content opened" style="padding-left:1em;">
 
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png"
 class="toggle-content-img" alt="" />
+    Android {@sdkPlatformVersion}, Revision 2</a> <em>(January 2012)</em>
+  </a></p>
+
+  <div class="toggle-content-toggleme" style="padding-left:2em;">
+
+<dl>
+<dt>Maintenance release. SDK Tools r14 or higher is required.
+</dt>
+</dl>
+
+  </div>
+</div>
+
+<div class="toggle-content closed" style="padding-left:1em;">
+
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png"
+class="toggle-content-img" alt="" />
     Android {@sdkPlatformVersion}, Revision 1</a> <em>(December 2011)</em>
   </a></p>
 
@@ -71,17 +93,12 @@
 
 <dl>
 <dt>Initial release. SDK Tools r14 or higher is required.
-  <p class="caution"><strong>Important:</strong> To download the new Android
-  4.0.x system components from the Android SDK Manager, you must first update the
-  SDK tools to revision 14 or later and restart the Android SDK Manager. If you do not,
-  the Android 4.0.x system components will not be available for download.</p>
 </dt>
 </dl>
 
   </div>
 </div>
 
-
 <h2 id="api">API Overview</h2>
 
 <p>The sections below provide a technical overview of new APIs in Android 4.0.3.</p>
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 5cac42a..dcda67d 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -130,8 +130,7 @@
      */
     public Canvas(Bitmap bitmap) {
         if (!bitmap.isMutable()) {
-            throw new IllegalStateException(
-                            "Immutable bitmap passed to Canvas constructor");
+            throw new IllegalStateException("Immutable bitmap passed to Canvas constructor");
         }
         throwIfRecycled(bitmap);
         mNativeCanvas = initRaster(bitmap.ni());
@@ -361,8 +360,8 @@
     /**
      * Helper version of saveLayer() that takes 4 values rather than a RectF.
      */
-    public int saveLayer(float left, float top, float right, float bottom,
-                         Paint paint, int saveFlags) {
+    public int saveLayer(float left, float top, float right, float bottom, Paint paint,
+            int saveFlags) {
         return native_saveLayer(mNativeCanvas, left, top, right, bottom,
                                 paint != null ? paint.mNativePaint : 0,
                                 saveFlags);
@@ -392,8 +391,8 @@
     /**
      * Helper for saveLayerAlpha() that takes 4 values instead of a RectF.
      */
-    public int saveLayerAlpha(float left, float top, float right, float bottom,
-                              int alpha, int saveFlags) {
+    public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
+            int saveFlags) {
         return native_saveLayerAlpha(mNativeCanvas, left, top, right, bottom,
                                      alpha, saveFlags);
     }
@@ -496,9 +495,15 @@
     /**
      * Completely replace the current matrix with the specified matrix. If the
      * matrix parameter is null, then the current matrix is reset to identity.
+     * 
+     * <strong>Note:</strong> it is recommended to use {@link #concat(Matrix)},
+     * {@link #scale(float, float)}, {@link #translate(float, float)} and
+     * {@link #rotate(float)} instead of this method.
      *
      * @param matrix The matrix to replace the current matrix with. If it is
      *               null, set the current matrix to identity.
+     *               
+     * @see #concat(Matrix) 
      */
     public void setMatrix(Matrix matrix) {
         native_setMatrix(mNativeCanvas,
@@ -509,6 +514,7 @@
      * Return, in ctm, the current transformation matrix. This does not alter
      * the matrix in the canvas, but just returns a copy of it.
      */
+    @Deprecated
     public void getMatrix(Matrix ctm) {
         native_getCTM(mNativeCanvas, ctm.native_instance);
     }
@@ -517,8 +523,10 @@
      * Return a new matrix with a copy of the canvas' current transformation
      * matrix.
      */
+    @Deprecated
     public final Matrix getMatrix() {
         Matrix m = new Matrix();
+        //noinspection deprecation
         getMatrix(m);
         return m;
     }
@@ -531,9 +539,8 @@
      * @return true if the resulting clip is non-empty
      */
     public boolean clipRect(RectF rect, Region.Op op) {
-        return native_clipRect(mNativeCanvas,
-                               rect.left, rect.top, rect.right, rect.bottom,
-                               op.nativeInt);
+        return native_clipRect(mNativeCanvas, rect.left, rect.top, rect.right, rect.bottom,
+                op.nativeInt);
     }
 
     /**
@@ -545,9 +552,8 @@
      * @return true if the resulting clip is non-empty
      */
     public boolean clipRect(Rect rect, Region.Op op) {
-        return native_clipRect(mNativeCanvas,
-                               rect.left, rect.top, rect.right, rect.bottom,
-                               op.nativeInt);
+        return native_clipRect(mNativeCanvas, rect.left, rect.top, rect.right, rect.bottom,
+                op.nativeInt);
     }
 
     /**
@@ -583,10 +589,8 @@
      * @param op     How the clip is modified
      * @return       true if the resulting clip is non-empty
      */
-    public boolean clipRect(float left, float top, float right, float bottom,
-                            Region.Op op) {
-        return native_clipRect(mNativeCanvas, left, top, right, bottom,
-                               op.nativeInt);
+    public boolean clipRect(float left, float top, float right, float bottom, Region.Op op) {
+        return native_clipRect(mNativeCanvas, left, top, right, bottom, op.nativeInt);
     }
 
     /**
@@ -602,9 +606,8 @@
      *               clip
      * @return       true if the resulting clip is non-empty
      */
-    public native boolean clipRect(float left, float top,
-                                   float right, float bottom);
-    
+    public native boolean clipRect(float left, float top, float right, float bottom);
+
     /**
      * Intersect the current clip with the specified rectangle, which is
      * expressed in local coordinates.
@@ -618,9 +621,8 @@
      *               clip
      * @return       true if the resulting clip is non-empty
      */
-    public native boolean clipRect(int left, int top,
-                                   int right, int bottom);
-    
+    public native boolean clipRect(int left, int top, int right, int bottom);
+
     /**
         * Modify the current clip with the specified path.
      *
@@ -753,8 +755,7 @@
      * @return            true if the rect (transformed by the canvas' matrix)
      *                    does not intersect with the canvas' clip
      */
-    public boolean quickReject(float left, float top, float right, float bottom,
-                               EdgeType type) {
+    public boolean quickReject(float left, float top, float right, float bottom, EdgeType type) {
         return native_quickReject(mNativeCanvas, left, top, right, bottom,
                                   type.nativeInt);
     }
@@ -854,8 +855,7 @@
      *                 "points" that are drawn is really (count >> 1).
      * @param paint    The paint used to draw the points
      */
-    public native void drawPoints(float[] pts, int offset, int count,
-                                  Paint paint);
+    public native void drawPoints(float[] pts, int offset, int count, Paint paint);
 
     /**
      * Helper for drawPoints() that assumes you want to draw the entire array
@@ -878,10 +878,8 @@
      * @param startY The y-coordinate of the start point of the line
      * @param paint  The paint used to draw the line
      */
-    public void drawLine(float startX, float startY, float stopX, float stopY,
-                         Paint paint) {
-        native_drawLine(mNativeCanvas, startX, startY, stopX, stopY,
-                        paint.mNativePaint);
+    public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) {
+        native_drawLine(mNativeCanvas, startX, startY, stopX, stopY, paint.mNativePaint);
     }
 
     /**
@@ -899,8 +897,7 @@
      *                 (count >> 2).
      * @param paint    The paint used to draw the points
      */
-    public native void drawLines(float[] pts, int offset, int count,
-                                 Paint paint);
+    public native void drawLines(float[] pts, int offset, int count, Paint paint);
 
     public void drawLines(float[] pts, Paint paint) {
         drawLines(pts, 0, pts.length, paint);
@@ -939,10 +936,8 @@
      * @param bottom The bottom side of the rectangle to be drawn
      * @param paint  The paint used to draw the rect
      */
-    public void drawRect(float left, float top, float right, float bottom,
-                         Paint paint) {
-        native_drawRect(mNativeCanvas, left, top, right, bottom,
-                        paint.mNativePaint);
+    public void drawRect(float left, float top, float right, float bottom, Paint paint) {
+        native_drawRect(mNativeCanvas, left, top, right, bottom, paint.mNativePaint);
     }
 
     /**
@@ -969,8 +964,7 @@
      * @param paint  The paint used to draw the circle
      */
     public void drawCircle(float cx, float cy, float radius, Paint paint) {
-        native_drawCircle(mNativeCanvas, cx, cy, radius,
-                          paint.mNativePaint);
+        native_drawCircle(mNativeCanvas, cx, cy, radius, paint.mNativePaint);
     }
 
     /**
@@ -996,8 +990,8 @@
                         close it if it is being stroked. This will draw a wedge
      * @param paint      The paint used to draw the arc
      */
-    public void drawArc(RectF oval, float startAngle, float sweepAngle,
-                        boolean useCenter, Paint paint) {
+    public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter,
+            Paint paint) {
         if (oval == null) {
             throw new NullPointerException();
         }
@@ -1035,8 +1029,7 @@
     
     private static void throwIfRecycled(Bitmap bitmap) {
         if (bitmap.isRecycled()) {
-            throw new RuntimeException(
-                        "Canvas: trying to use a recycled bitmap " + bitmap);
+            throw new RuntimeException("Canvas: trying to use a recycled bitmap " + bitmap);
         }
     }
 
@@ -1077,8 +1070,7 @@
     public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) {
         throwIfRecycled(bitmap);
         native_drawBitmap(mNativeCanvas, bitmap.ni(), left, top,
-                paint != null ? paint.mNativePaint : 0, mDensity, mScreenDensity,
-                bitmap.mDensity);
+                paint != null ? paint.mNativePaint : 0, mDensity, mScreenDensity, bitmap.mDensity);
     }
 
     /**
@@ -1109,8 +1101,7 @@
         }
         throwIfRecycled(bitmap);
         native_drawBitmap(mNativeCanvas, bitmap.ni(), src, dst,
-                          paint != null ? paint.mNativePaint : 0,
-                          mScreenDensity, bitmap.mDensity);
+                          paint != null ? paint.mNativePaint : 0, mScreenDensity, bitmap.mDensity);
     }
 
     /**
@@ -1141,8 +1132,7 @@
         }
         throwIfRecycled(bitmap);
         native_drawBitmap(mNativeCanvas, bitmap.ni(), src, dst,
-                          paint != null ? paint.mNativePaint : 0,
-                          mScreenDensity, bitmap.mDensity);
+                          paint != null ? paint.mNativePaint : 0, mScreenDensity, bitmap.mDensity);
     }
     
     /**
@@ -1164,9 +1154,8 @@
      *                 be 0xFF for every pixel).
      * @param paint  May be null. The paint used to draw the bitmap
      */
-    public void drawBitmap(int[] colors, int offset, int stride, float x,
-                           float y, int width, int height, boolean hasAlpha,
-                           Paint paint) {
+    public void drawBitmap(int[] colors, int offset, int stride, float x, float y,
+            int width, int height, boolean hasAlpha, Paint paint) {
         // check for valid input
         if (width < 0) {
             throw new IllegalArgumentException("width must be >= 0");
@@ -1195,8 +1184,7 @@
     /** Legacy version of drawBitmap(int[] colors, ...) that took ints for x,y
      */
     public void drawBitmap(int[] colors, int offset, int stride, int x, int y,
-                           int width, int height, boolean hasAlpha,
-                           Paint paint) {
+            int width, int height, boolean hasAlpha, Paint paint) {
         // call through to the common float version
         drawBitmap(colors, offset, stride, (float)x, (float)y, width, height,
                    hasAlpha, paint);
@@ -1250,8 +1238,7 @@
      * @param paint  May be null. The paint used to draw the bitmap
      */
     public void drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight,
-                               float[] verts, int vertOffset,
-                               int[] colors, int colorOffset, Paint paint) {
+            float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint) {
         if ((meshWidth | meshHeight | vertOffset | colorOffset) < 0) {
             throw new ArrayIndexOutOfBoundsException();
         }
@@ -1269,7 +1256,7 @@
                              verts, vertOffset, colors, colorOffset,
                              paint != null ? paint.mNativePaint : 0);
     }
-        
+
     public enum VertexMode {
         TRIANGLES(0),
         TRIANGLE_STRIP(1),
@@ -1315,12 +1302,9 @@
      * @param indexCount number of entries in the indices array (if not null).
      * @param paint Specifies the shader to use if the texs array is non-null. 
      */
-    public void drawVertices(VertexMode mode, int vertexCount,
-                             float[] verts, int vertOffset,
-                             float[] texs, int texOffset,
-                             int[] colors, int colorOffset,
-                             short[] indices, int indexOffset,
-                             int indexCount, Paint paint) {
+    public void drawVertices(VertexMode mode, int vertexCount, float[] verts, int vertOffset,
+            float[] texs, int texOffset, int[] colors, int colorOffset,
+            short[] indices, int indexOffset, int indexCount, Paint paint) {
         checkRange(verts.length, vertOffset, vertexCount);
         if (texs != null) {
             checkRange(texs.length, texOffset, vertexCount);
@@ -1345,8 +1329,7 @@
      * @param y     The y-coordinate of the origin of the text being drawn
      * @param paint The paint used for the text (e.g. color, size, style)
      */
-    public void drawText(char[] text, int index, int count, float x, float y,
-                         Paint paint) {
+    public void drawText(char[] text, int index, int count, float x, float y, Paint paint) {
         if ((index | count | (index + count) |
             (text.length - index - count)) < 0) {
             throw new IndexOutOfBoundsException();
@@ -1380,8 +1363,7 @@
      * @param y     The y-coordinate of the origin of the text being drawn
      * @param paint The paint used for the text (e.g. color, size, style)
      */
-    public void drawText(String text, int start, int end, float x, float y,
-                         Paint paint) {
+    public void drawText(String text, int start, int end, float x, float y, Paint paint) {
         if ((start | end | (end - start) | (text.length() - end)) < 0) {
             throw new IndexOutOfBoundsException();
         }
@@ -1402,8 +1384,7 @@
      * @param y        The y-coordinate of origin for where to draw the text
      * @param paint The paint used for the text (e.g. color, size, style)
      */
-    public void drawText(CharSequence text, int start, int end, float x,
-                         float y, Paint paint) {
+    public void drawText(CharSequence text, int start, int end, float x, float y, Paint paint) {
         if (text instanceof String || text instanceof SpannedString ||
             text instanceof SpannableString) {
             native_drawText(mNativeCanvas, text.toString(), start, end, x, y,
@@ -1441,9 +1422,8 @@
      * @param paint the paint
      * @hide
      */
-    public void drawTextRun(char[] text, int index, int count,
-            int contextIndex, int contextCount, float x, float y, int dir,
-            Paint paint) {
+    public void drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount,
+            float x, float y, int dir, Paint paint) {
 
         if (text == null) {
             throw new NullPointerException("text is null");
@@ -1479,9 +1459,8 @@
      * @param paint the paint
      * @hide
      */
-    public void drawTextRun(CharSequence text, int start, int end,
-            int contextStart, int contextEnd, float x, float y, int dir,
-            Paint paint) {
+    public void drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd,
+            float x, float y, int dir, Paint paint) {
 
         if (text == null) {
             throw new NullPointerException("text is null");
@@ -1527,8 +1506,8 @@
      *                 character
      * @param paint    The paint used for the text (e.g. color, size, style)
      */
-    public void drawPosText(char[] text, int index, int count, float[] pos,
-                            Paint paint) {
+    @Deprecated
+    public void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) {
         if (index < 0 || index + count > text.length || count*2 > pos.length) {
             throw new IndexOutOfBoundsException();
         }
@@ -1547,6 +1526,7 @@
      * @param pos   Array of [x,y] positions, used to position each character
      * @param paint The paint used for the text (e.g. color, size, style)
      */
+    @Deprecated
     public void drawPosText(String text, float[] pos, Paint paint) {
         if (text.length()*2 > pos.length) {
             throw new ArrayIndexOutOfBoundsException();
@@ -1568,7 +1548,7 @@
      * @param paint    The paint used for the text (e.g. color, size, style)
      */
     public void drawTextOnPath(char[] text, int index, int count, Path path,
-                               float hOffset, float vOffset, Paint paint) {
+            float hOffset, float vOffset, Paint paint) {
         if (index < 0 || index + count > text.length) {
             throw new ArrayIndexOutOfBoundsException();
         }
@@ -1590,12 +1570,10 @@
      *                 the text
      * @param paint    The paint used for the text (e.g. color, size, style)
      */
-    public void drawTextOnPath(String text, Path path, float hOffset,
-                               float vOffset, Paint paint) {
+    public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
         if (text.length() > 0) {
-            native_drawTextOnPath(mNativeCanvas, text, path.ni(),
-                                  hOffset, vOffset, paint.mBidiFlags,
-                                  paint.mNativePaint);
+            native_drawTextOnPath(mNativeCanvas, text, path.ni(), hOffset, vOffset,
+                    paint.mBidiFlags, paint.mNativePaint);
         }
     }
 
@@ -1618,8 +1596,7 @@
         save();
         translate(dst.left, dst.top);
         if (picture.getWidth() > 0 && picture.getHeight() > 0) {
-            scale(dst.width() / picture.getWidth(),
-                  dst.height() / picture.getHeight());
+            scale(dst.width() / picture.getWidth(), dst.height() / picture.getHeight());
         }
         drawPicture(picture);
         restore();
@@ -1632,8 +1609,8 @@
         save();
         translate(dst.left, dst.top);
         if (picture.getWidth() > 0 && picture.getHeight() > 0) {
-            scale((float)dst.width() / picture.getWidth(),
-                  (float)dst.height() / picture.getHeight());
+            scale((float) dst.width() / picture.getWidth(),
+                    (float) dst.height() / picture.getHeight());
         }
         drawPicture(picture);
         restore();
diff --git a/graphics/java/android/graphics/DrawFilter.java b/graphics/java/android/graphics/DrawFilter.java
index 6b44ed7..1f64539 100644
--- a/graphics/java/android/graphics/DrawFilter.java
+++ b/graphics/java/android/graphics/DrawFilter.java
@@ -28,7 +28,11 @@
     /* package */ int mNativeInt;    // pointer to native object
 
     protected void finalize() throws Throwable {
-        nativeDestructor(mNativeInt);
+        try {
+            nativeDestructor(mNativeInt);
+        } finally {
+            super.finalize();
+        }
     }
     
     private static native void nativeDestructor(int nativeDrawFilter);
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index ce42612..c97785e 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -528,6 +528,7 @@
      *
      * @return true if the lineartext bit is set in the paint's flags
      */
+    @Deprecated
     public final boolean isLinearText() {
         return (getFlags() & LINEAR_TEXT_FLAG) != 0;
     }
@@ -538,6 +539,7 @@
      * @param linearText true to set the linearText bit in the paint's flags,
      *                   false to clear it.
      */
+    @Deprecated
     public native void setLinearText(boolean linearText);
 
     /**
@@ -2142,8 +2144,6 @@
     private static native void native_setTextAlign(int native_object,
                                                    int align);
 
-    private static native float native_getFontMetrics(int native_paint,
-                                                      FontMetrics metrics);
     private static native int native_getTextWidths(int native_object,
                             char[] text, int index, int count, float[] widths);
     private static native int native_getTextWidths(int native_object,
diff --git a/graphics/java/android/graphics/Picture.java b/graphics/java/android/graphics/Picture.java
index bbb2dbf..997141d 100644
--- a/graphics/java/android/graphics/Picture.java
+++ b/graphics/java/android/graphics/Picture.java
@@ -32,10 +32,15 @@
     private Canvas mRecordingCanvas;
     private final int mNativePicture;
 
+    /**
+     * @hide
+     */
+    public final boolean createdFromStream;
+
     private static final int WORKING_STREAM_STORAGE = 16 * 1024;
 
     public Picture() {
-        this(nativeConstructor(0));
+        this(nativeConstructor(0), false);
     }
 
     /**
@@ -44,7 +49,7 @@
      * changes will not be reflected in this picture.
      */
     public Picture(Picture src) {
-        this(nativeConstructor(src != null ? src.mNativePicture : 0));
+        this(nativeConstructor(src != null ? src.mNativePicture : 0), false);
     }
     
     /**
@@ -101,15 +106,24 @@
     /**
      * Create a new picture (already recorded) from the data in the stream. This
      * data was generated by a previous call to writeToStream().
+     * 
+     * <strong>Note:</strong> a picture created from an input stream cannot be
+     * replayed on a hardware accelerated canvas.
+     * 
+     * @see #writeToStream(java.io.OutputStream) 
      */
     public static Picture createFromStream(InputStream stream) {
-        return new Picture(
-            nativeCreateFromStream(stream, new byte[WORKING_STREAM_STORAGE]));
+        return new Picture(nativeCreateFromStream(stream, new byte[WORKING_STREAM_STORAGE]), true);
     }
 
     /**
      * Write the picture contents to a stream. The data can be used to recreate
      * the picture in this or another process by calling createFromStream.
+     *
+     * <strong>Note:</strong> a picture created from an input stream cannot be
+     * replayed on a hardware accelerated canvas.
+     * 
+     * @see #createFromStream(java.io.InputStream) 
      */
     public void writeToStream(OutputStream stream) {
         // do explicit check before calling the native method
@@ -123,18 +137,23 @@
     }
 
     protected void finalize() throws Throwable {
-        nativeDestructor(mNativePicture);
+        try {
+            nativeDestructor(mNativePicture);
+        } finally {
+            super.finalize();
+        }
     }
-    
-    /*package*/ final int ni() {
+
+    final int ni() {
         return mNativePicture;
     }
     
-    private Picture(int nativePicture) {
+    private Picture(int nativePicture, boolean fromStream) {
         if (nativePicture == 0) {
             throw new RuntimeException();
         }
         mNativePicture = nativePicture;
+        createdFromStream = fromStream;
     }
 
     // return empty picture if src is 0, or a copy of the native src
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index 84a8f1c..756e91d 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -22,7 +22,6 @@
 
 #include <media/IAudioFlinger.h>
 #include <media/IAudioRecord.h>
-#include <media/AudioTrack.h>
 
 #include <utils/RefBase.h>
 #include <utils/Errors.h>
@@ -34,6 +33,8 @@
 
 namespace android {
 
+class audio_track_cblk_t;
+
 // ----------------------------------------------------------------------------
 
 class AudioRecord
@@ -67,7 +68,7 @@
         };
         uint32_t    flags;
         int         channelCount;
-        int         format;
+        audio_format_t format;
         size_t      frameCount;
         size_t      size;
         union {
@@ -111,7 +112,7 @@
 
      static status_t getMinFrameCount(int* frameCount,
                                       uint32_t sampleRate,
-                                      int format,
+                                      audio_format_t format,
                                       int channelCount);
 
     /* Constructs an uninitialized AudioRecord. No connection with
@@ -150,7 +151,7 @@
 
                         AudioRecord(int inputSource,
                                     uint32_t sampleRate = 0,
-                                    int format          = 0,
+                                    audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                     uint32_t channelMask = AUDIO_CHANNEL_IN_MONO,
                                     int frameCount      = 0,
                                     uint32_t flags      = 0,
@@ -176,7 +177,7 @@
      * */
             status_t    set(int inputSource     = 0,
                             uint32_t sampleRate = 0,
-                            int format          = 0,
+                            audio_format_t format = AUDIO_FORMAT_DEFAULT,
                             uint32_t channelMask = AUDIO_CHANNEL_IN_MONO,
                             int frameCount      = 0,
                             uint32_t flags      = 0,
@@ -202,7 +203,7 @@
 
    /* getters, see constructor */
 
-            int         format() const;
+            audio_format_t format() const;
             int         channelCount() const;
             int         channels() const;
             uint32_t    frameCount() const;
@@ -348,7 +349,7 @@
 
             bool processAudioBuffer(const sp<ClientRecordThread>& thread);
             status_t openRecord_l(uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -364,7 +365,7 @@
     uint32_t                mFrameCount;
 
     audio_track_cblk_t*     mCblk;
-    uint32_t                mFormat;
+    audio_format_t          mFormat;
     uint8_t                 mChannelCount;
     uint8_t                 mInputSource;
     uint8_t                 mReserved[2];
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 4415d33..c6368fb 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -95,7 +95,7 @@
 
     static bool routedToA2dpOutput(audio_stream_type_t streamType);
 
-    static status_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount,
+    static status_t getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount,
         size_t* buffSize);
 
     static status_t setVoiceVolume(float volume);
@@ -134,7 +134,7 @@
     class OutputDescriptor {
     public:
         OutputDescriptor()
-        : samplingRate(0), format(0), channels(0), frameCount(0), latency(0)  {}
+        : samplingRate(0), format(AUDIO_FORMAT_DEFAULT), channels(0), frameCount(0), latency(0)  {}
 
         uint32_t samplingRate;
         int32_t format;
@@ -149,12 +149,11 @@
     static status_t setDeviceConnectionState(audio_devices_t device, audio_policy_dev_state_t state, const char *device_address);
     static audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device, const char *device_address);
     static status_t setPhoneState(audio_mode_t state);
-    static status_t setRingerMode(uint32_t mode, uint32_t mask);
     static status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config);
     static audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage);
     static audio_io_handle_t getOutput(audio_stream_type_t stream,
                                         uint32_t samplingRate = 0,
-                                        uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                        audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                         uint32_t channels = AUDIO_CHANNEL_OUT_STEREO,
                                         audio_policy_output_flags_t flags = AUDIO_POLICY_OUTPUT_FLAG_INDIRECT);
     static status_t startOutput(audio_io_handle_t output,
@@ -166,7 +165,7 @@
     static void releaseOutput(audio_io_handle_t output);
     static audio_io_handle_t getInput(int inputSource,
                                     uint32_t samplingRate = 0,
-                                    uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                    audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                     uint32_t channels = AUDIO_CHANNEL_IN_MONO,
                                     audio_in_acoustics_t acoustics = (audio_in_acoustics_t)0,
                                     int sessionId = 0);
@@ -243,7 +242,7 @@
     static size_t gInBuffSize;
     // previous parameters for recording buffer size queries
     static uint32_t gPrevInSamplingRate;
-    static int gPrevInFormat;
+    static audio_format_t gPrevInFormat;
     static int gPrevInChannelCount;
 
     static sp<IAudioPolicyService> gAudioPolicyService;
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index fe91799..98abfbd 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -411,7 +411,7 @@
      */
 
         enum {
-            NO_MORE_BUFFERS = 0x80000001,
+            NO_MORE_BUFFERS = 0x80000001,   // same name in AudioFlinger.h, ok to be different value
             STOPPED = 1
         };
 
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
index 3999479..7c0d886 100644
--- a/include/media/IAudioFlinger.h
+++ b/include/media/IAudioFlinger.h
@@ -48,7 +48,7 @@
                                 pid_t pid,
                                 audio_stream_type_t streamType,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -61,7 +61,7 @@
                                 pid_t pid,
                                 int input,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -73,7 +73,7 @@
      */
     virtual     uint32_t    sampleRate(int output) const = 0;
     virtual     int         channelCount(int output) const = 0;
-    virtual     uint32_t    format(int output) const = 0;
+    virtual     audio_format_t format(int output) const = 0;
     virtual     size_t      frameCount(int output) const = 0;
     virtual     uint32_t    latency(int output) const = 0;
 
@@ -109,11 +109,11 @@
     virtual void registerClient(const sp<IAudioFlingerClient>& client) = 0;
 
     // retrieve the audio recording buffer size
-    virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount) = 0;
+    virtual size_t getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount) = 0;
 
     virtual int openOutput(uint32_t *pDevices,
                                     uint32_t *pSamplingRate,
-                                    uint32_t *pFormat,
+                                    audio_format_t *pFormat,
                                     uint32_t *pChannels,
                                     uint32_t *pLatencyMs,
                                     uint32_t flags) = 0;
@@ -124,7 +124,7 @@
 
     virtual int openInput(uint32_t *pDevices,
                                     uint32_t *pSamplingRate,
-                                    uint32_t *pFormat,
+                                    audio_format_t *pFormat,
                                     uint32_t *pChannels,
                                     uint32_t acoustics) = 0;
     virtual status_t closeInput(int input) = 0;
diff --git a/include/media/IAudioPolicyService.h b/include/media/IAudioPolicyService.h
index a83d806..07d17c5 100644
--- a/include/media/IAudioPolicyService.h
+++ b/include/media/IAudioPolicyService.h
@@ -46,12 +46,11 @@
     virtual audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device,
                                                                           const char *device_address) = 0;
     virtual status_t setPhoneState(audio_mode_t state) = 0;
-    virtual status_t setRingerMode(uint32_t mode, uint32_t mask) = 0;
     virtual status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config) = 0;
     virtual audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage) = 0;
     virtual audio_io_handle_t getOutput(audio_stream_type_t stream,
                                         uint32_t samplingRate = 0,
-                                        uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                        audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                         uint32_t channels = 0,
                                         audio_policy_output_flags_t flags = AUDIO_POLICY_OUTPUT_FLAG_INDIRECT) = 0;
     virtual status_t startOutput(audio_io_handle_t output,
@@ -63,7 +62,7 @@
     virtual void releaseOutput(audio_io_handle_t output) = 0;
     virtual audio_io_handle_t getInput(int inputSource,
                                     uint32_t samplingRate = 0,
-                                    uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                    audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                     uint32_t channels = 0,
                                     audio_in_acoustics_t acoustics = (audio_in_acoustics_t)0,
                                     int audioSession = 0) = 0;
diff --git a/include/media/thread_init.h b/include/media/thread_init.h
deleted file mode 100644
index 2feac86..0000000
--- a/include/media/thread_init.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT 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 THREAD_INIT_H
-#define THREAD_INIT_H
-
-bool InitializeForThread();
-void UninitializeForThread();
-
-#endif /* THREAD_INIT_H*/
-	
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index dd7ec4f..422184e 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -422,7 +422,7 @@
             return;
         }
 
-        SkPaint* paintCopy =  mPaintMap.valueFor(paint);
+        SkPaint* paintCopy = mPaintMap.valueFor(paint);
         if (paintCopy == NULL || paintCopy->getGenerationID() != paint->getGenerationID()) {
             paintCopy = new SkPaint(*paint);
             mPaintMap.add(paint, paintCopy);
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 790c143..74efda2 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -94,7 +94,8 @@
     }
 }
 
-void Font::measureCachedGlyph(CachedGlyphInfo *glyph, int x, int y, Rect *bounds) {
+void Font::measureCachedGlyph(CachedGlyphInfo *glyph, int x, int y,
+        uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) {
     int nPenX = x + glyph->mBitmapLeft;
     int nPenY = y + glyph->mBitmapTop;
 
@@ -115,7 +116,8 @@
     }
 }
 
-void Font::drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y) {
+void Font::drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y,
+        uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) {
     int nPenX = x + glyph->mBitmapLeft;
     int nPenY = y + glyph->mBitmapTop + glyph->mBitmapHeight;
 
@@ -133,8 +135,8 @@
             nPenX, nPenY - height, u1, v1, glyph->mCachedTextureLine->mCacheTexture);
 }
 
-void Font::drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y,
-        uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH) {
+void Font::drawCachedGlyphBitmap(CachedGlyphInfo* glyph, int x, int y,
+        uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) {
     int nPenX = x + glyph->mBitmapLeft;
     int nPenY = y + glyph->mBitmapTop;
 
@@ -181,13 +183,19 @@
         int numGlyphs, int x, int y, uint8_t *bitmap, uint32_t bitmapW, uint32_t bitmapH) {
     if (bitmap != NULL && bitmapW > 0 && bitmapH > 0) {
         render(paint, text, start, len, numGlyphs, x, y, BITMAP, bitmap,
-                bitmapW, bitmapH, NULL);
+                bitmapW, bitmapH, NULL, NULL);
     } else {
         render(paint, text, start, len, numGlyphs, x, y, FRAMEBUFFER, NULL,
-                0, 0, NULL);
+                0, 0, NULL, NULL);
     }
 }
 
+void Font::render(SkPaint* paint, const char *text, uint32_t start, uint32_t len,
+            int numGlyphs, int x, int y, const float* positions) {
+    render(paint, text, start, len, numGlyphs, x, y, FRAMEBUFFER, NULL,
+            0, 0, NULL, positions);
+}
+
 void Font::measure(SkPaint* paint, const char* text, uint32_t start, uint32_t len,
         int numGlyphs, Rect *bounds) {
     if (bounds == NULL) {
@@ -195,62 +203,95 @@
         return;
     }
     bounds->set(1e6, -1e6, -1e6, 1e6);
-    render(paint, text, start, len, numGlyphs, 0, 0, MEASURE, NULL, 0, 0, bounds);
+    render(paint, text, start, len, numGlyphs, 0, 0, MEASURE, NULL, 0, 0, bounds, NULL);
 }
 
 #define SkAutoKern_AdjustF(prev, next) (((next) - (prev) + 32) >> 6 << 16)
 
 void Font::render(SkPaint* paint, const char* text, uint32_t start, uint32_t len,
         int numGlyphs, int x, int y, RenderMode mode, uint8_t *bitmap,
-        uint32_t bitmapW, uint32_t bitmapH,Rect *bounds) {
+        uint32_t bitmapW, uint32_t bitmapH, Rect *bounds, const float* positions) {
     if (numGlyphs == 0 || text == NULL || len == 0) {
         return;
     }
 
-    float penX = x;
-    int penY = y;
-    int glyphsLeft = 1;
-    if (numGlyphs > 0) {
-        glyphsLeft = numGlyphs;
-    }
-
-    SkFixed prevRsbDelta = 0;
-    penX += 0.5f;
+    int glyphsCount = 0;
 
     text += start;
 
-    while (glyphsLeft > 0) {
-        glyph_t glyph = GET_GLYPH(text);
+    static RenderGlyph gRenderGlyph[] = {
+            &android::uirenderer::Font::drawCachedGlyph,
+            &android::uirenderer::Font::drawCachedGlyphBitmap,
+            &android::uirenderer::Font::measureCachedGlyph
+    };
+    RenderGlyph render = gRenderGlyph[mode];
 
-        // Reached the end of the string
-        if (IS_END_OF_STRING(glyph)) {
-            break;
-        }
+    if (positions == NULL) {
+        SkFixed prevRsbDelta = 0;
 
-        CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
-        penX += SkFixedToFloat(SkAutoKern_AdjustF(prevRsbDelta, cachedGlyph->mLsbDelta));
-        prevRsbDelta = cachedGlyph->mRsbDelta;
+        float penX = x;
+        int penY = y;
 
-        // If it's still not valid, we couldn't cache it, so we shouldn't draw garbage
-        if (cachedGlyph->mIsValid) {
-            switch(mode) {
-            case FRAMEBUFFER:
-                drawCachedGlyph(cachedGlyph, (int) floorf(penX), penY);
-                break;
-            case BITMAP:
-                drawCachedGlyph(cachedGlyph, (int) floorf(penX), penY, bitmap, bitmapW, bitmapH);
-                break;
-            case MEASURE:
-                measureCachedGlyph(cachedGlyph, (int) floorf(penX), penY, bounds);
+        penX += 0.5f;
+
+        while (glyphsCount < numGlyphs) {
+            glyph_t glyph = GET_GLYPH(text);
+
+            // Reached the end of the string
+            if (IS_END_OF_STRING(glyph)) {
                 break;
             }
+
+            CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
+            penX += SkFixedToFloat(SkAutoKern_AdjustF(prevRsbDelta, cachedGlyph->mLsbDelta));
+            prevRsbDelta = cachedGlyph->mRsbDelta;
+
+            // If it's still not valid, we couldn't cache it, so we shouldn't draw garbage
+            if (cachedGlyph->mIsValid) {
+                (*this.*render)(cachedGlyph, (int) floorf(penX), penY,
+                        bitmap, bitmapW, bitmapH, bounds, positions);
+            }
+
+            penX += SkFixedToFloat(cachedGlyph->mAdvanceX);
+
+            glyphsCount++;
         }
+    } else {
+        const SkPaint::Align align = paint->getTextAlign();
 
-        penX += SkFixedToFloat(cachedGlyph->mAdvanceX);
+        // This is for renderPosText()
+        while (glyphsCount < numGlyphs) {
+            glyph_t glyph = GET_GLYPH(text);
 
-        // If we were given a specific number of glyphs, decrement
-        if (numGlyphs > 0) {
-            glyphsLeft--;
+            // Reached the end of the string
+            if (IS_END_OF_STRING(glyph)) {
+                break;
+            }
+
+            CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph);
+
+            // If it's still not valid, we couldn't cache it, so we shouldn't draw garbage
+            if (cachedGlyph->mIsValid) {
+                int penX = x + positions[(glyphsCount << 1)];
+                int penY = y + positions[(glyphsCount << 1) + 1];
+
+                switch (align) {
+                    case SkPaint::kRight_Align:
+                        penX -= SkFixedToFloat(cachedGlyph->mAdvanceX);
+                        penY -= SkFixedToFloat(cachedGlyph->mAdvanceY);
+                        break;
+                    case SkPaint::kCenter_Align:
+                        penX -= SkFixedToFloat(cachedGlyph->mAdvanceX >> 1);
+                        penY -= SkFixedToFloat(cachedGlyph->mAdvanceY >> 1);
+                    default:
+                        break;
+                }
+
+                (*this.*render)(cachedGlyph, penX, penY,
+                        bitmap, bitmapW, bitmapH, bounds, positions);
+            }
+
+            glyphsCount++;
         }
     }
 }
@@ -866,21 +907,15 @@
     return image;
 }
 
-bool FontRenderer::renderText(SkPaint* paint, const Rect* clip, const char *text,
-        uint32_t startIndex, uint32_t len, int numGlyphs, int x, int y, Rect* bounds) {
+void FontRenderer::initRender(const Rect* clip, Rect* bounds) {
     checkInit();
 
-    if (!mCurrentFont) {
-        ALOGE("No font set");
-        return false;
-    }
-
     mDrawn = false;
     mBounds = bounds;
     mClip = clip;
+}
 
-    mCurrentFont->render(paint, text, startIndex, len, numGlyphs, x, y);
-
+void FontRenderer::finishRender() {
     mBounds = NULL;
     mClip = NULL;
 
@@ -888,6 +923,33 @@
         issueDrawCommand();
         mCurrentQuadIndex = 0;
     }
+}
+
+bool FontRenderer::renderText(SkPaint* paint, const Rect* clip, const char *text,
+        uint32_t startIndex, uint32_t len, int numGlyphs, int x, int y, Rect* bounds) {
+    if (!mCurrentFont) {
+        ALOGE("No font set");
+        return false;
+    }
+
+    initRender(clip, bounds);
+    mCurrentFont->render(paint, text, startIndex, len, numGlyphs, x, y);
+    finishRender();
+
+    return mDrawn;
+}
+
+bool FontRenderer::renderPosText(SkPaint* paint, const Rect* clip, const char *text,
+        uint32_t startIndex, uint32_t len, int numGlyphs, int x, int y,
+        const float* positions, Rect* bounds) {
+    if (!mCurrentFont) {
+        ALOGE("No font set");
+        return false;
+    }
+
+    initRender(clip, bounds);
+    mCurrentFont->render(paint, text, startIndex, len, numGlyphs, x, y, positions);
+    finishRender();
 
     return mDrawn;
 }
diff --git a/libs/hwui/FontRenderer.h b/libs/hwui/FontRenderer.h
index 005cdde..b767be5 100644
--- a/libs/hwui/FontRenderer.h
+++ b/libs/hwui/FontRenderer.h
@@ -151,6 +151,10 @@
     void render(SkPaint* paint, const char *text, uint32_t start, uint32_t len,
             int numGlyphs, int x, int y, uint8_t *bitmap = NULL,
             uint32_t bitmapW = 0, uint32_t bitmapH = 0);
+
+    void render(SkPaint* paint, const char *text, uint32_t start, uint32_t len,
+            int numGlyphs, int x, int y, const float* positions);
+
     /**
      * Creates a new font associated with the specified font state.
      */
@@ -160,6 +164,8 @@
 
 protected:
     friend class FontRenderer;
+    typedef void (Font::*RenderGlyph)(CachedGlyphInfo*, int, int, uint8_t*,
+            uint32_t, uint32_t, Rect*, const float*);
 
     enum RenderMode {
         FRAMEBUFFER,
@@ -169,7 +175,7 @@
 
     void render(SkPaint* paint, const char *text, uint32_t start, uint32_t len,
             int numGlyphs, int x, int y, RenderMode mode, uint8_t *bitmap,
-            uint32_t bitmapW, uint32_t bitmapH, Rect *bounds);
+            uint32_t bitmapW, uint32_t bitmapH, Rect *bounds, const float* positions);
 
     void measure(SkPaint* paint, const char* text, uint32_t start, uint32_t len,
             int numGlyphs, Rect *bounds);
@@ -183,11 +189,17 @@
     void invalidateTextureCache(CacheTextureLine *cacheLine = NULL);
 
     CachedGlyphInfo* cacheGlyph(SkPaint* paint, glyph_t glyph);
-    void updateGlyphCache(SkPaint* paint, const SkGlyph& skiaGlyph, CachedGlyphInfo *glyph);
-    void measureCachedGlyph(CachedGlyphInfo *glyph, int x, int y, Rect *bounds);
-    void drawCachedGlyph(CachedGlyphInfo *glyph, int x, int y);
-    void drawCachedGlyph(CachedGlyphInfo *glyph, int x, int y,
-            uint8_t *bitmap, uint32_t bitmapW, uint32_t bitmapH);
+    void updateGlyphCache(SkPaint* paint, const SkGlyph& skiaGlyph, CachedGlyphInfo* glyph);
+
+    void measureCachedGlyph(CachedGlyphInfo* glyph, int x, int y,
+            uint8_t *bitmap, uint32_t bitmapW, uint32_t bitmapH,
+            Rect* bounds, const float* pos);
+    void drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y,
+            uint8_t *bitmap, uint32_t bitmapW, uint32_t bitmapH,
+            Rect* bounds, const float* pos);
+    void drawCachedGlyphBitmap(CachedGlyphInfo* glyph, int x, int y,
+            uint8_t *bitmap, uint32_t bitmapW, uint32_t bitmapH,
+            Rect* bounds, const float* pos);
 
     CachedGlyphInfo* getCachedGlyph(SkPaint* paint, glyph_t textUnit);
 
@@ -226,8 +238,12 @@
     }
 
     void setFont(SkPaint* paint, uint32_t fontId, float fontSize);
+    // bounds is an out parameter
     bool renderText(SkPaint* paint, const Rect* clip, const char *text, uint32_t startIndex,
             uint32_t len, int numGlyphs, int x, int y, Rect* bounds);
+    // bounds is an out parameter
+    bool renderPosText(SkPaint* paint, const Rect* clip, const char *text, uint32_t startIndex,
+            uint32_t len, int numGlyphs, int x, int y, const float* positions, Rect* bounds);
 
     struct DropShadow {
         DropShadow() { };
@@ -297,6 +313,8 @@
     void initVertexArrayBuffers();
 
     void checkInit();
+    void initRender(const Rect* clip, Rect* bounds);
+    void finishRender();
 
     String16 mLatinPrecache;
     void precacheLatin(SkPaint* paint);
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 6ec87f3..786a4f1 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -2084,23 +2084,81 @@
 
 void OpenGLRenderer::drawPosText(const char* text, int bytesCount, int count,
         const float* positions, SkPaint* paint) {
-    if (text == NULL || count == 0) {
+    if (text == NULL || count == 0 || mSnapshot->isIgnored() ||
+            (paint->getAlpha() == 0 && paint->getXfermode() == NULL)) {
         return;
     }
-    if (mSnapshot->isIgnored()) return;
 
-    // TODO: implement properly
-    drawText(text, bytesCount, count, 0, 0, paint);
+    // NOTE: Skia does not support perspective transform on drawPosText yet
+    if (!mSnapshot->transform->isSimple()) {
+        return;
+    }
+
+    float x = 0.0f;
+    float y = 0.0f;
+    const bool pureTranslate = mSnapshot->transform->isPureTranslate();
+    if (pureTranslate) {
+        x = (int) floorf(x + mSnapshot->transform->getTranslateX() + 0.5f);
+        y = (int) floorf(y + mSnapshot->transform->getTranslateY() + 0.5f);
+    }
+
+    FontRenderer& fontRenderer = mCaches.fontRenderer.getFontRenderer(paint);
+    fontRenderer.setFont(paint, SkTypeface::UniqueID(paint->getTypeface()),
+            paint->getTextSize());
+
+    int alpha;
+    SkXfermode::Mode mode;
+    getAlphaAndMode(paint, &alpha, &mode);
+
+    // Pick the appropriate texture filtering
+    bool linearFilter = mSnapshot->transform->changesBounds();
+    if (pureTranslate && !linearFilter) {
+        linearFilter = fabs(y - (int) y) > 0.0f || fabs(x - (int) x) > 0.0f;
+    }
+
+    mCaches.activeTexture(0);
+    setupDraw();
+    setupDrawDirtyRegionsDisabled();
+    setupDrawWithTexture(true);
+    setupDrawAlpha8Color(paint->getColor(), alpha);
+    setupDrawColorFilter();
+    setupDrawShader();
+    setupDrawBlending(true, mode);
+    setupDrawProgram();
+    setupDrawModelView(x, y, x, y, pureTranslate, true);
+    setupDrawTexture(fontRenderer.getTexture(linearFilter));
+    setupDrawPureColorUniforms();
+    setupDrawColorFilterUniforms();
+    setupDrawShaderUniforms(pureTranslate);
+
+    const Rect* clip = pureTranslate ? mSnapshot->clipRect : &mSnapshot->getLocalClip();
+    Rect bounds(FLT_MAX / 2.0f, FLT_MAX / 2.0f, FLT_MIN / 2.0f, FLT_MIN / 2.0f);
+
+#if RENDER_LAYERS_AS_REGIONS
+    bool hasActiveLayer = hasLayer();
+#else
+    bool hasActiveLayer = false;
+#endif
+
+    if (fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y,
+            positions, hasActiveLayer ? &bounds : NULL)) {
+#if RENDER_LAYERS_AS_REGIONS
+        if (hasActiveLayer) {
+            if (!pureTranslate) {
+                mSnapshot->transform->mapRect(bounds);
+            }
+            dirtyLayerUnchecked(bounds, getRegion());
+        }
+#endif
+    }
 }
 
 void OpenGLRenderer::drawText(const char* text, int bytesCount, int count,
         float x, float y, SkPaint* paint, float length) {
-    if (text == NULL || count == 0) {
+    if (text == NULL || count == 0 || mSnapshot->isIgnored() ||
+            (paint->getAlpha() == 0 && paint->getXfermode() == NULL)) {
         return;
     }
-    if (mSnapshot->isIgnored()) return;
-
-    // NOTE: AA and glyph id encoding are set in DisplayListRenderer.cpp
 
     switch (paint->getTextAlign()) {
         case SkPaint::kCenter_Align:
@@ -2177,10 +2235,6 @@
         glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount);
     }
 
-    if (paint->getAlpha() == 0 && paint->getXfermode() == NULL) {
-        return;
-    }
-
     // Pick the appropriate texture filtering
     bool linearFilter = mSnapshot->transform->changesBounds();
     if (pureTranslate && !linearFilter) {
diff --git a/libs/rs/scriptc/rs_allocation.rsh b/libs/rs/scriptc/rs_allocation.rsh
index 1cb3a99..9ec03bf 100644
--- a/libs/rs/scriptc/rs_allocation.rsh
+++ b/libs/rs/scriptc/rs_allocation.rsh
@@ -28,13 +28,13 @@
  *
  * To use Renderscript, you need to utilize the Renderscript runtime APIs documented here
  * as well as the Android framework APIs for Renderscript.
- * For documentation on the Android framework APIs, see the <a href=
+ * For documentation on the Android framework APIs, see the <a target="_parent" href=
  * "http://developer.android.com/reference/android/renderscript/package-summary.html">
  * android.renderscript</a> package reference.
  * For more information on how to develop with Renderscript and how the runtime and
- * Android framework APIs interact, see the <a href=
+ * Android framework APIs interact, see the <a target="_parent" href=
  * "http://developer.android.com/guide/topics/renderscript/index.html">Renderscript
- * developer guide</a> and the <a href=
+ * developer guide</a> and the <a target="_parent" href=
  * "http://developer.android.com/resources/samples/RenderScript/index.html">
  * Renderscript samples</a>.
  */
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 81145d3..3080497 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -313,7 +313,6 @@
     public static native int setDeviceConnectionState(int device, int state, String device_address);
     public static native int getDeviceConnectionState(int device, String device_address);
     public static native int setPhoneState(int state);
-    public static native int setRingerMode(int mode, int mask);
     public static native int setForceUse(int usage, int config);
     public static native int getForceUse(int usage);
     public static native int initStreamVolume(int stream, int indexMin, int indexMax);
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index d4b326c..ee96a95 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -26,7 +26,6 @@
     libgui \
     libstagefright \
     libcamera_client \
-    libsqlite \
     libmtp \
     libusbhost \
     libexif
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index 32b5bac..5b5b076 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -48,7 +48,7 @@
 status_t AudioRecord::getMinFrameCount(
         int* frameCount,
         uint32_t sampleRate,
-        int format,
+        audio_format_t format,
         int channelCount)
 {
     size_t size = 0;
@@ -86,7 +86,7 @@
 AudioRecord::AudioRecord(
         int inputSource,
         uint32_t sampleRate,
-        int format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         uint32_t flags,
@@ -121,7 +121,7 @@
 status_t AudioRecord::set(
         int inputSource,
         uint32_t sampleRate,
-        int format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         uint32_t flags,
@@ -148,7 +148,7 @@
         sampleRate = DEFAULT_SAMPLE_RATE;
     }
     // these below should probably come from the audioFlinger too...
-    if (format == 0) {
+    if (format == AUDIO_FORMAT_DEFAULT) {
         format = AUDIO_FORMAT_PCM_16_BIT;
     }
     // validate parameters
@@ -248,7 +248,7 @@
     return mLatency;
 }
 
-int AudioRecord::format() const
+audio_format_t AudioRecord::format() const
 {
     return mFormat;
 }
@@ -448,7 +448,7 @@
 // must be called with mLock held
 status_t AudioRecord::openRecord_l(
         uint32_t sampleRate,
-        uint32_t format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         uint32_t flags,
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index f532d35..952d634 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -40,7 +40,7 @@
 
 // Cached values for recording queries, all protected by gLock
 uint32_t AudioSystem::gPrevInSamplingRate = 16000;
-int AudioSystem::gPrevInFormat = AUDIO_FORMAT_PCM_16_BIT;
+audio_format_t AudioSystem::gPrevInFormat = AUDIO_FORMAT_PCM_16_BIT;
 int AudioSystem::gPrevInChannelCount = 1;
 size_t AudioSystem::gInBuffSize = 0;
 
@@ -49,7 +49,7 @@
 const sp<IAudioFlinger>& AudioSystem::get_audio_flinger()
 {
     Mutex::Autolock _l(gLock);
-    if (gAudioFlinger.get() == 0) {
+    if (gAudioFlinger == 0) {
         sp<IServiceManager> sm = defaultServiceManager();
         sp<IBinder> binder;
         do {
@@ -308,7 +308,7 @@
     return NO_ERROR;
 }
 
-status_t AudioSystem::getInputBufferSize(uint32_t sampleRate, int format, int channelCount,
+status_t AudioSystem::getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount,
     size_t* buffSize)
 {
     gLock.lock();
@@ -499,7 +499,7 @@
 const sp<IAudioPolicyService>& AudioSystem::get_audio_policy_service()
 {
     gLock.lock();
-    if (gAudioPolicyService.get() == 0) {
+    if (gAudioPolicyService == 0) {
         sp<IServiceManager> sm = defaultServiceManager();
         sp<IBinder> binder;
         do {
@@ -548,19 +548,13 @@
 
 status_t AudioSystem::setPhoneState(audio_mode_t state)
 {
+    if (uint32_t(state) >= AUDIO_MODE_CNT) return BAD_VALUE;
     const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
     if (aps == 0) return PERMISSION_DENIED;
 
     return aps->setPhoneState(state);
 }
 
-status_t AudioSystem::setRingerMode(uint32_t mode, uint32_t mask)
-{
-    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
-    if (aps == 0) return PERMISSION_DENIED;
-    return aps->setRingerMode(mode, mask);
-}
-
 status_t AudioSystem::setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config)
 {
     const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
@@ -578,7 +572,7 @@
 
 audio_io_handle_t AudioSystem::getOutput(audio_stream_type_t stream,
                                     uint32_t samplingRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channels,
                                     audio_policy_output_flags_t flags)
 {
@@ -638,7 +632,7 @@
 
 audio_io_handle_t AudioSystem::getInput(int inputSource,
                                     uint32_t samplingRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channels,
                                     audio_in_acoustics_t acoustics,
                                     int sessionId)
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 837fcc3..17e3d4b 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -43,6 +43,8 @@
 #include <system/audio.h>
 #include <system/audio_policy.h>
 
+#include <audio_utils/primitives.h>
+
 namespace android {
 // ---------------------------------------------------------------------------
 
@@ -1017,12 +1019,7 @@
         if (mFormat == AUDIO_FORMAT_PCM_8_BIT && !(mFlags & AUDIO_POLICY_OUTPUT_FLAG_DIRECT)) {
             // Divide capacity by 2 to take expansion into account
             toWrite = audioBuffer.size>>1;
-            // 8 to 16 bit conversion
-            int count = toWrite;
-            int16_t *dst = (int16_t *)(audioBuffer.i8);
-            while(count--) {
-                *dst++ = (int16_t)(*src++^0x80) << 8;
-            }
+            memcpy_to_i16_from_u8(audioBuffer.i16, (const uint8_t *) src, toWrite);
         } else {
             toWrite = audioBuffer.size;
             memcpy(audioBuffer.i8, src, toWrite);
@@ -1143,13 +1140,8 @@
         if (writtenSize > reqSize) writtenSize = reqSize;
 
         if (mFormat == AUDIO_FORMAT_PCM_8_BIT && !(mFlags & AUDIO_POLICY_OUTPUT_FLAG_DIRECT)) {
-            // 8 to 16 bit conversion
-            const int8_t *src = audioBuffer.i8 + writtenSize-1;
-            int count = writtenSize;
-            int16_t *dst = audioBuffer.i16 + writtenSize-1;
-            while(count--) {
-                *dst-- = (int16_t)(*src--^0x80) << 8;
-            }
+            // 8 to 16 bit conversion, note that source and destination are the same address
+            memcpy_to_i16_from_u8(audioBuffer.i16, (const uint8_t *) audioBuffer.i8, writtenSize);
             writtenSize <<= 1;
         }
 
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index eef551c..0d442ef 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -84,7 +84,7 @@
                                 pid_t pid,
                                 audio_stream_type_t streamType,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -131,7 +131,7 @@
                                 pid_t pid,
                                 int input,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -188,13 +188,13 @@
         return reply.readInt32();
     }
 
-    virtual uint32_t format(int output) const
+    virtual audio_format_t format(int output) const
     {
         Parcel data, reply;
         data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
         data.writeInt32(output);
         remote()->transact(FORMAT, data, &reply);
-        return reply.readInt32();
+        return (audio_format_t) reply.readInt32();
     }
 
     virtual size_t frameCount(int output) const
@@ -343,7 +343,7 @@
         remote()->transact(REGISTER_CLIENT, data, &reply);
     }
 
-    virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount)
+    virtual size_t getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount)
     {
         Parcel data, reply;
         data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
@@ -356,7 +356,7 @@
 
     virtual int openOutput(uint32_t *pDevices,
                             uint32_t *pSamplingRate,
-                            uint32_t *pFormat,
+                            audio_format_t *pFormat,
                             uint32_t *pChannels,
                             uint32_t *pLatencyMs,
                             uint32_t flags)
@@ -364,7 +364,7 @@
         Parcel data, reply;
         uint32_t devices = pDevices ? *pDevices : 0;
         uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0;
-        uint32_t format = pFormat ? *pFormat : 0;
+        audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
         uint32_t channels = pChannels ? *pChannels : 0;
         uint32_t latency = pLatencyMs ? *pLatencyMs : 0;
 
@@ -382,7 +382,7 @@
         if (pDevices) *pDevices = devices;
         samplingRate = reply.readInt32();
         if (pSamplingRate) *pSamplingRate = samplingRate;
-        format = reply.readInt32();
+        format = (audio_format_t) reply.readInt32();
         if (pFormat) *pFormat = format;
         channels = reply.readInt32();
         if (pChannels) *pChannels = channels;
@@ -430,14 +430,14 @@
 
     virtual int openInput(uint32_t *pDevices,
                             uint32_t *pSamplingRate,
-                            uint32_t *pFormat,
+                            audio_format_t *pFormat,
                             uint32_t *pChannels,
                             uint32_t acoustics)
     {
         Parcel data, reply;
         uint32_t devices = pDevices ? *pDevices : 0;
         uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0;
-        uint32_t format = pFormat ? *pFormat : 0;
+        audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
         uint32_t channels = pChannels ? *pChannels : 0;
 
         data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
@@ -452,7 +452,7 @@
         if (pDevices) *pDevices = devices;
         samplingRate = reply.readInt32();
         if (pSamplingRate) *pSamplingRate = samplingRate;
-        format = reply.readInt32();
+        format = (audio_format_t) reply.readInt32();
         if (pFormat) *pFormat = format;
         channels = reply.readInt32();
         if (pChannels) *pChannels = channels;
@@ -678,7 +678,7 @@
             pid_t pid = data.readInt32();
             int streamType = data.readInt32();
             uint32_t sampleRate = data.readInt32();
-            int format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             int channelCount = data.readInt32();
             size_t bufferCount = data.readInt32();
             uint32_t flags = data.readInt32();
@@ -699,7 +699,7 @@
             pid_t pid = data.readInt32();
             int input = data.readInt32();
             uint32_t sampleRate = data.readInt32();
-            int format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             int channelCount = data.readInt32();
             size_t bufferCount = data.readInt32();
             uint32_t flags = data.readInt32();
@@ -825,7 +825,7 @@
         case GET_INPUTBUFFERSIZE: {
             CHECK_INTERFACE(IAudioFlinger, data, reply);
             uint32_t sampleRate = data.readInt32();
-            int format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             int channelCount = data.readInt32();
             reply->writeInt32( getInputBufferSize(sampleRate, format, channelCount) );
             return NO_ERROR;
@@ -834,7 +834,7 @@
             CHECK_INTERFACE(IAudioFlinger, data, reply);
             uint32_t devices = data.readInt32();
             uint32_t samplingRate = data.readInt32();
-            uint32_t format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             uint32_t channels = data.readInt32();
             uint32_t latency = data.readInt32();
             uint32_t flags = data.readInt32();
@@ -879,7 +879,7 @@
             CHECK_INTERFACE(IAudioFlinger, data, reply);
             uint32_t devices = data.readInt32();
             uint32_t samplingRate = data.readInt32();
-            uint32_t format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             uint32_t channels = data.readInt32();
             uint32_t acoutics = data.readInt32();
 
diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp
index 6205ebd..b5c857f 100644
--- a/media/libmedia/IAudioPolicyService.cpp
+++ b/media/libmedia/IAudioPolicyService.cpp
@@ -33,7 +33,7 @@
     SET_DEVICE_CONNECTION_STATE = IBinder::FIRST_CALL_TRANSACTION,
     GET_DEVICE_CONNECTION_STATE,
     SET_PHONE_STATE,
-    SET_RINGER_MODE,
+    SET_RINGER_MODE,    // reserved, no longer used
     SET_FORCE_USE,
     GET_FORCE_USE,
     GET_OUTPUT,
@@ -100,16 +100,6 @@
         return static_cast <status_t> (reply.readInt32());
     }
 
-    virtual status_t setRingerMode(uint32_t mode, uint32_t mask)
-    {
-        Parcel data, reply;
-        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
-        data.writeInt32(mode);
-        data.writeInt32(mask);
-        remote()->transact(SET_RINGER_MODE, data, &reply);
-        return static_cast <status_t> (reply.readInt32());
-    }
-
     virtual status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config)
     {
         Parcel data, reply;
@@ -132,7 +122,7 @@
     virtual audio_io_handle_t getOutput(
                                         audio_stream_type_t stream,
                                         uint32_t samplingRate,
-                                        uint32_t format,
+                                        audio_format_t format,
                                         uint32_t channels,
                                         audio_policy_output_flags_t flags)
     {
@@ -184,7 +174,7 @@
     virtual audio_io_handle_t getInput(
                                     int inputSource,
                                     uint32_t samplingRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channels,
                                     audio_in_acoustics_t acoustics,
                                     int audioSession)
@@ -405,14 +395,6 @@
             return NO_ERROR;
         } break;
 
-        case SET_RINGER_MODE: {
-            CHECK_INTERFACE(IAudioPolicyService, data, reply);
-            uint32_t mode = data.readInt32();
-            uint32_t mask = data.readInt32();
-            reply->writeInt32(static_cast <uint32_t>(setRingerMode(mode, mask)));
-            return NO_ERROR;
-        } break;
-
         case SET_FORCE_USE: {
             CHECK_INTERFACE(IAudioPolicyService, data, reply);
             audio_policy_force_use_t usage = static_cast <audio_policy_force_use_t>(data.readInt32());
@@ -434,7 +416,7 @@
             audio_stream_type_t stream =
                     static_cast <audio_stream_type_t>(data.readInt32());
             uint32_t samplingRate = data.readInt32();
-            uint32_t format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             uint32_t channels = data.readInt32();
             audio_policy_output_flags_t flags =
                     static_cast <audio_policy_output_flags_t>(data.readInt32());
@@ -481,7 +463,7 @@
             CHECK_INTERFACE(IAudioPolicyService, data, reply);
             int inputSource = data.readInt32();
             uint32_t samplingRate = data.readInt32();
-            uint32_t format = data.readInt32();
+            audio_format_t format = (audio_format_t) data.readInt32();
             uint32_t channels = data.readInt32();
             audio_in_acoustics_t acoustics =
                     static_cast <audio_in_acoustics_t>(data.readInt32());
diff --git a/media/libmedia/IMediaDeathNotifier.cpp b/media/libmedia/IMediaDeathNotifier.cpp
index 8525482..aeb35a5 100644
--- a/media/libmedia/IMediaDeathNotifier.cpp
+++ b/media/libmedia/IMediaDeathNotifier.cpp
@@ -36,7 +36,7 @@
 {
     ALOGV("getMediaPlayerService");
     Mutex::Autolock _l(sServiceLock);
-    if (sMediaPlayerService.get() == 0) {
+    if (sMediaPlayerService == 0) {
         sp<IServiceManager> sm = defaultServiceManager();
         sp<IBinder> binder;
         do {
diff --git a/media/libmedia/Visualizer.cpp b/media/libmedia/Visualizer.cpp
index 478654a..13b64e9 100644
--- a/media/libmedia/Visualizer.cpp
+++ b/media/libmedia/Visualizer.cpp
@@ -73,7 +73,7 @@
     if (status == NO_ERROR) {
         if (t != 0) {
             if (enabled) {
-                t->run("AudioTrackThread");
+                t->run("Visualizer");
             } else {
                 t->requestExit();
             }
diff --git a/media/libmedia/autodetect.cpp b/media/libmedia/autodetect.cpp
index dfcc6a0..be5c3b2 100644
--- a/media/libmedia/autodetect.cpp
+++ b/media/libmedia/autodetect.cpp
@@ -16,7 +16,7 @@
 
 #include "autodetect.h"
 
-typedef struct CharRange {
+struct CharRange {
     uint16_t first;
     uint16_t last;
 };
diff --git a/media/libmedia/mediametadataretriever.cpp b/media/libmedia/mediametadataretriever.cpp
index 88e269f..8d53357 100644
--- a/media/libmedia/mediametadataretriever.cpp
+++ b/media/libmedia/mediametadataretriever.cpp
@@ -35,7 +35,7 @@
 const sp<IMediaPlayerService>& MediaMetadataRetriever::getService()
 {
     Mutex::Autolock lock(sServiceLock);
-    if (sService.get() == 0) {
+    if (sService == 0) {
         sp<IServiceManager> sm = defaultServiceManager();
         sp<IBinder> binder;
         do {
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index acf97a6..f1c47dd 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -30,7 +30,7 @@
 #include <gui/SurfaceTextureClient.h>
 
 #include <media/mediaplayer.h>
-#include <media/AudioTrack.h>
+#include <media/AudioSystem.h>
 
 #include <surfaceflinger/Surface.h>
 
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 6b68b87..fa71d11 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -34,6 +34,7 @@
 
 namespace android {
 
+class AudioTrack;
 class IMediaRecorder;
 class IMediaMetadataRetriever;
 class IOMX;
diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp
index d219fc2..beda945 100644
--- a/media/libmediaplayerservice/MediaRecorderClient.cpp
+++ b/media/libmediaplayerservice/MediaRecorderClient.cpp
@@ -33,8 +33,6 @@
 
 #include <utils/String16.h>
 
-#include <media/AudioTrack.h>
-
 #include <system/audio.h>
 
 #include "MediaRecorderClient.h"
diff --git a/media/libmediaplayerservice/MidiFile.h b/media/libmediaplayerservice/MidiFile.h
index dfe4318..f6f8f7b 100644
--- a/media/libmediaplayerservice/MidiFile.h
+++ b/media/libmediaplayerservice/MidiFile.h
@@ -19,7 +19,6 @@
 #define ANDROID_MIDIFILE_H
 
 #include <media/MediaPlayerInterface.h>
-#include <media/AudioTrack.h>
 #include <libsonivox/eas.h>
 
 namespace android {
diff --git a/media/libstagefright/include/ThrottledSource.h b/media/libstagefright/include/ThrottledSource.h
index 8928a4a..7fe7c06 100644
--- a/media/libstagefright/include/ThrottledSource.h
+++ b/media/libstagefright/include/ThrottledSource.h
@@ -35,6 +35,11 @@
     virtual status_t getSize(off64_t *size);
     virtual uint32_t flags();
 
+    virtual String8 getMIMEType() const {
+        return mSource->getMIMEType();
+    }
+
+
 private:
     Mutex mLock;
 
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h
index 2391c5c..9a7dd70 100644
--- a/media/libstagefright/rtsp/MyHandler.h
+++ b/media/libstagefright/rtsp/MyHandler.h
@@ -122,6 +122,7 @@
           mSetupTracksSuccessful(false),
           mSeekPending(false),
           mFirstAccessUnit(true),
+          mAllTracksHaveTime(false),
           mNTPAnchorUs(-1),
           mMediaAnchorUs(-1),
           mLastMediaTimeUs(0),
@@ -723,6 +724,7 @@
                 mSetupTracksSuccessful = false;
                 mSeekPending = false;
                 mFirstAccessUnit = true;
+                mAllTracksHaveTime = false;
                 mNTPAnchorUs = -1;
                 mMediaAnchorUs = -1;
                 mNumAccessUnitsReceived = 0;
@@ -930,6 +932,7 @@
                     info->mNTPAnchorUs = -1;
                 }
 
+                mAllTracksHaveTime = false;
                 mNTPAnchorUs = -1;
 
                 int64_t timeUs;
@@ -1037,6 +1040,14 @@
                         ALOGW("Never received any data, disconnecting.");
                         (new AMessage('abor', id()))->post();
                     }
+                } else {
+                    if (!mAllTracksHaveTime) {
+                        ALOGW("We received some RTCP packets, but time "
+                              "could not be established on all tracks, now "
+                              "using fake timestamps");
+
+                        fakeTimestamps();
+                    }
                 }
                 break;
             }
@@ -1211,6 +1222,7 @@
     bool mSeekPending;
     bool mFirstAccessUnit;
 
+    bool mAllTracksHaveTime;
     int64_t mNTPAnchorUs;
     int64_t mMediaAnchorUs;
     int64_t mLastMediaTimeUs;
@@ -1357,6 +1369,7 @@
     }
 
     void fakeTimestamps() {
+        mNTPAnchorUs = -1ll;
         for (size_t i = 0; i < mTracks.size(); ++i) {
             onTimeUpdate(i, 0, 0ll);
         }
@@ -1377,6 +1390,21 @@
             mNTPAnchorUs = ntpTimeUs;
             mMediaAnchorUs = mLastMediaTimeUs;
         }
+
+        if (!mAllTracksHaveTime) {
+            bool allTracksHaveTime = true;
+            for (size_t i = 0; i < mTracks.size(); ++i) {
+                TrackInfo *track = &mTracks.editItemAt(i);
+                if (track->mNTPAnchorUs < 0) {
+                    allTracksHaveTime = false;
+                    break;
+                }
+            }
+            if (allTracksHaveTime) {
+                mAllTracksHaveTime = true;
+                ALOGI("Time now established for all tracks.");
+            }
+        }
     }
 
     void onAccessUnitComplete(
@@ -1403,7 +1431,7 @@
 
         TrackInfo *track = &mTracks.editItemAt(trackIndex);
 
-        if (mNTPAnchorUs < 0 || mMediaAnchorUs < 0 || track->mNTPAnchorUs < 0) {
+        if (!mAllTracksHaveTime) {
             ALOGV("storing accessUnit, no time established yet");
             track->mPackets.push_back(accessUnit);
             return;
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaItemThumbnailTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaItemThumbnailTest.java
index 80a3bcd..7dfab7d 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaItemThumbnailTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaItemThumbnailTest.java
@@ -82,7 +82,6 @@
     /**
      * To test thumbnail / frame extraction on H.263 QCIF.
      */
-    // TODO : TC_TN_001
     @LargeTest
     public void testThumbnailForH263QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -104,7 +103,6 @@
     /**
      * To test thumbnail / frame extraction on MPEG4 VGA .
      */
-    // TODO : TC_TN_002
     @LargeTest
     public void testThumbnailForMPEG4VGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -124,7 +122,6 @@
     /**
      * To test thumbnail / frame extraction on MPEG4 NTSC.
      */
-    // TODO : TC_TN_003
     @LargeTest
     public void testThumbnailForMPEG4NTSC() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -144,7 +141,6 @@
     /**
      * To test thumbnail / frame extraction on MPEG4 WVGA.
      */
-    // TODO : TC_TN_004
     @LargeTest
     public void testThumbnailForMPEG4WVGA() throws Exception {
 
@@ -165,7 +161,6 @@
     /**
      * To test thumbnail / frame extraction on MPEG4 QCIF.
      */
-    // TODO : TC_TN_005
     @LargeTest
     public void testThumbnailForMPEG4QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -186,7 +181,6 @@
     /**
      * To test thumbnail / frame extraction on H264 QCIF.
      */
-    // TODO : TC_TN_006
     @LargeTest
     public void testThumbnailForH264QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -207,7 +201,6 @@
     /**
      * To test thumbnail / frame extraction on H264 VGA.
      */
-    // TODO : TC_TN_007
     @LargeTest
     public void testThumbnailForH264VGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -228,7 +221,6 @@
     /**
      * To test thumbnail / frame extraction on H264 WVGA.
      */
-    // TODO : TC_TN_008
     @LargeTest
     public void testThumbnailForH264WVGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -248,7 +240,6 @@
     /**
      * To test thumbnail / frame extraction on H264 854x480.
      */
-    // TODO : TC_TN_009
     @LargeTest
     public void testThumbnailForH264854_480() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -269,7 +260,6 @@
     /**
      * To test thumbnail / frame extraction on H264 960x720.
      */
-    // TODO : TC_TN_010
     @LargeTest
     public void testThumbnailForH264HD960() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -290,7 +280,6 @@
     /**
      * To test thumbnail / frame extraction on H264 1080x720 .
      */
-    // TODO : TC_TN_011
     @LargeTest
     public void testThumbnailForH264HD1080() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -310,7 +299,6 @@
     /**
      * Check the thumbnail / frame extraction precision at 0,100 and 200 ms
      */
-    // TODO : TC_TN_012
     @LargeTest
     public void testThumbnailForH264VGADifferentDuration() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -345,7 +333,6 @@
      *Check the thumbnail / frame extraction precision at
      * FileDuration,FileDuration/2 + 100 andFileDuration/2 + 200 ms
      */
-    // TODO : TC_TN_013
     @LargeTest
     public void testThumbnailForMP4VGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -379,7 +366,6 @@
     /**
      * Check the thumbnail / frame extraction on JPEG file
      */
-    // TODO : TC_TN_014
     @LargeTest
     public void testThumbnailForImage() throws Exception {
         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -402,7 +388,6 @@
     /**
      *To test ThumbnailList for H263 QCIF
      */
-    // TODO : TC_TN_015
     @LargeTest
     public void testThumbnailListH263QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -432,7 +417,6 @@
     /**
      *To test ThumbnailList for MPEG4 QCIF
      */
-    // TODO : TC_TN_016
     @LargeTest
     public void testThumbnailListMPEG4QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -463,7 +447,6 @@
     /**
      *To test ThumbnailList for H264 VGA
      */
-    // TODO : TC_TN_017
     @LargeTest
     public void testThumbnailListH264VGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -492,7 +475,6 @@
     /**
      *To test ThumbnailList for H264 WVGA
      */
-    // TODO : TC_TN_018
     @LargeTest
     public void testThumbnailListH264WVGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -521,7 +503,6 @@
     /**
      *To test ThumbnailList for H264 VGA ,Time exceeding file duration
      */
-    // TODO : TC_TN_019
     @LargeTest
     public void testThumbnailH264VGAExceedingFileDuration() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -547,7 +528,6 @@
     /**
      *To test ThumbnailList for VGA Image
      */
-    // TODO : TC_TN_020
     @LargeTest
     public void testThumbnailListVGAImage() throws Exception {
         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -576,7 +556,6 @@
     /**
      *To test ThumbnailList for Invalid file path
      */
-    // TODO : TC_TN_021
     @LargeTest
     public void testThumbnailForInvalidFilePath() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "/sdcard/abc.jpg";
@@ -596,7 +575,6 @@
     /**
      * To test thumbnail / frame extraction with setBoundaries
      */
-    // TODO : TC_TN_022
     @LargeTest
     public void testThumbnailForMPEG4WVGAWithSetBoundaries() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -620,7 +598,6 @@
     /**
      *To test ThumbnailList for H264 WVGA with setExtractboundaries
      */
-    // TODO : TC_TN_023
     @LargeTest
     public void testThumbnailListForH264WVGAWithSetBoundaries() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -652,7 +629,6 @@
     /**
      *To test ThumbnailList for H264 WVGA with count > frame available
      */
-    // TODO : TC_TN_024
     @LargeTest
     public void testThumbnailListForH264WVGAWithCount() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -684,7 +660,6 @@
     /**
      *To test ThumbnailList for H264 WVGA with startTime > End Time
      */
-    // TODO : TC_TN_025
     @LargeTest
     public void testThumbnailListH264WVGAWithStartGreaterEnd() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -710,9 +685,8 @@
     }
 
     /**
-     *To test ThumbnailList TC_TN_026 for H264 WVGA with startTime = End Time
+     *To test ThumbnailList for H264 WVGA with startTime = End Time
      */
-    // TODO : TC_TN_026
     @LargeTest
     public void testThumbnailListH264WVGAWithStartEqualEnd() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -738,10 +712,9 @@
     }
 
     /**
-     *To test ThumbnailList TC_TN_027 for file where video duration is less
+     *To test ThumbnailList for file where video duration is less
      * than file duration.
      */
-    // TODO : TC_TN_027
     @LargeTest
     public void testThumbnailForVideoDurationLessFileDuration() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -760,9 +733,8 @@
     }
 
     /**
-     *To test ThumbnailList TC_TN_028 for file which has video part corrupted
+     *To test ThumbnailList for file which has video part corrupted
      */
-    // TODO : TC_TN_028
     @LargeTest
     public void testThumbnailWithCorruptedVideoPart() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -787,7 +759,6 @@
     /**
      * Check the thumbnail / frame list extraction for Height as Negative Value
      */
-    // TODO : TC_TN_029
     @LargeTest
     public void testThumbnailWithNegativeHeight() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -815,7 +786,6 @@
     /**
      * Check the thumbnail for Height as Zero
      */
-    // TODO : TC_TN_030
     @LargeTest
     public void testThumbnailWithHeightAsZero() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -839,7 +809,6 @@
     /**
      * Check the thumbnail for Height = 10
      */
-    // TODO : TC_TN_031
     @LargeTest
     public void testThumbnailWithHeight() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -859,7 +828,6 @@
     /**
      * Check the thumbnail / frame list extraction for Width as Negative Value
      */
-    // TODO : TC_TN_032
     @LargeTest
     public void testThumbnailWithNegativeWidth() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -887,7 +855,6 @@
     /**
      * Check the thumbnail / frame list extraction for Width zero
      */
-    // TODO : TC_TN_033
     @LargeTest
     public void testThumbnailWithWidthAsZero() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -911,7 +878,6 @@
     /**
      * Check the thumbnail for Width = 10
      */
-    // TODO : TC_TN_034
     @LargeTest
     public void testThumbnailWithWidth() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -931,7 +897,6 @@
     /**
      * To test thumbnail / frame extraction on MPEG4 (time beyond file duration).
      */
-    // TODO : TC_TN_035
     @LargeTest
     public void testThumbnailMPEG4withMorethanFileDuration() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaPropertiesTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaPropertiesTest.java
index e2f6863..34cf9f0 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaPropertiesTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/MediaPropertiesTest.java
@@ -130,7 +130,6 @@
     /**
      *To test Media Properties for file MPEG4 854 x 480
      */
-    // TODO : Remove TC_MP_001
     @LargeTest
     public void testPropertiesMPEG4854_480() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -163,7 +162,6 @@
     /**
      *To test Media Properties for file MPEG4 WVGA
      */
-    // TODO : Remove TC_MP_002
     @LargeTest
     public void testPropertiesMPEGWVGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -195,7 +193,6 @@
     /**
      *To test media properties for MPEG4 720x480 (NTSC) + AAC file.
      */
-    // TODO : Remove TC_MP_003
     @LargeTest
     public void testPropertiesMPEGNTSC() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -227,7 +224,6 @@
     /**
      *To test Media Properties for file MPEG4 VGA
      */
-    // TODO : Remove TC_MP_004
     @LargeTest
     public void testPropertiesMPEGVGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -259,7 +255,6 @@
     /**
      *To test Media Properties for file MPEG4 QCIF
      */
-    // TODO : Remove TC_MP_005
     @LargeTest
     public void testPropertiesMPEGQCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -291,7 +286,6 @@
     /**
      *To To test media properties for H263 176x144 (QCIF) + AAC (mono) file.
      */
-    // TODO : Remove TC_MP_006
     @LargeTest
     public void testPropertiesH263QCIF() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -322,7 +316,6 @@
     /**
      *To test Media Properties for file H264 VGA
      */
-    // TODO : Remove TC_MP_007
     @LargeTest
     public void testPropertiesH264VGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -353,7 +346,6 @@
     /**
      *To test Media Properties for file H264 NTSC
      */
-    // TODO : Remove TC_MP_008
     @LargeTest
     public void testPropertiesH264NTSC() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -385,7 +377,6 @@
     /**
      *To test media properties for H264 800x480 (WVGA) + AAC file.
      */
-    // TODO : Remove TC_MP_009
     @LargeTest
     public void testPropertiesH264WVGA() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -417,7 +408,6 @@
     /**
      *To test Media Properties for file H264 HD1280
      */
-    // TODO : Remove TC_MP_010
     @LargeTest
     public void testPropertiesH264HD1280() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -449,7 +439,6 @@
     /**
      *To test media properties for H264 1080x720 + AAC file
      */
-    // TODO : Remove TC_MP_011
     @LargeTest
     public void testPropertiesH264HD1080WithAudio() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -481,7 +470,6 @@
     /**
      *To test Media Properties for file WMV - Unsupported type
      */
-    // TODO : Remove TC_MP_012
     @LargeTest
     public void testPropertiesWMVFile() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -506,7 +494,6 @@
     /**
      *To test media properties for H.264 Main/Advanced profile.
      */
-    // TODO : Remove TC_MP_013
     @LargeTest
     public void testPropertiesH264MainLineProfile() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH
@@ -539,7 +526,6 @@
     /**
      *To test Media Properties for non existing file.
      */
-    // TODO : Remove TC_MP_014
     @LargeTest
     public void testPropertiesForNonExsitingFile() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH + "abc.3gp";
@@ -559,7 +545,6 @@
     /**
      *To test Media Properties for file H264 HD1080
      */
-    // TODO : Remove TC_MP_015
     @LargeTest
     public void testPropertiesH264HD1080WithoutAudio() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -591,7 +576,6 @@
     /**
      *To test Media Properties for Image file of JPEG Type
      */
-    // TODO : Remove TC_MP_016
     @LargeTest
     public void testPropertiesVGAImage() throws Exception {
         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -611,7 +595,6 @@
     /**
      *To test Media Properties for Image file of PNG Type
      */
-    // TODO : Remove TC_MP_017
     @LargeTest
     public void testPropertiesPNG() throws Exception {
         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.png";
@@ -630,7 +613,6 @@
     /**
      *To test Media Properties for file GIF - Unsupported type
      */
-    // TODO : Remove TC_MP_018
     @LargeTest
     public void testPropertiesGIFFile() throws Exception {
 
@@ -651,7 +633,6 @@
     /**
      *To test Media Properties for file Text file named as 3GP
      */
-    // TODO : Remove TC_MP_019
     @LargeTest
     public void testPropertiesofDirtyFile() throws Exception {
 
@@ -672,7 +653,6 @@
     /**
      *To test Media Properties for file name as NULL
      */
-    // TODO : Remove TC_MP_020
     @LargeTest
     public void testPropertieNULLFile() throws Exception {
         final String videoItemFilename = null;
@@ -691,7 +671,6 @@
     /**
      *To test Media Properties for file which is of type MPEG2
      */
-    // TODO : Remove TC_MP_021
     @LargeTest
     public void testPropertiesMPEG2File() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -709,9 +688,8 @@
     }
 
     /**
-     *To test Media Properties TC_MP_023 for file without Video only Audio
+     *To test Media Properties for file without Video only Audio
      */
-    // TODO : Remove TC_MP_023
     @LargeTest
     public void testProperties3GPWithoutVideoMediaItem() throws Exception {
         final String audioFilename = INPUT_FILE_PATH +
@@ -731,7 +709,6 @@
     /**
      *To test media properties for Audio Track file. (No Video, AAC Audio)
      */
-    // TODO : Remove TC_MP_024
     @LargeTest
     public void testProperties3GPWithoutVideoAudioTrack() throws Exception {
 
@@ -753,7 +730,6 @@
         /**
      *To test media properties for Audio Track file. MP3 file
      */
-    // TODO : Remove TC_MP_025
     @LargeTest
     public void testPropertiesMP3AudioTrack() throws Exception {
 
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorAPITest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorAPITest.java
index b32d865..6e520c3 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorAPITest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorAPITest.java
@@ -88,7 +88,6 @@
     /**
      * To Test Creation of Media Video Item.
      */
-    // TODO : remove TC_API_001
     @LargeTest
     public void testMediaVideoItem() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -130,7 +129,6 @@
      * To test creation of Media Video Item with Set Extract Boundaries With Get
      * the Begin and End Time.
      */
-    // TODO : remove TC_API_002
     @LargeTest
     public void testMediaVideoItemExtractBoundaries() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -199,7 +197,6 @@
     /**
      * To test creation of Media Video Item with Set and Get rendering Mode
      */
-    // TODO : remove TC_API_003
     @LargeTest
     public void testMediaVideoItemRenderingModes() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -238,12 +235,10 @@
             mediaVideoItem1.getRenderingMode());
     }
 
-    /** Test Case  TC_API_004 is removed */
 
     /**
      * To Test the Media Video API : Set Audio Volume, Get Audio Volume and Mute
      */
-    // TODO : remove TC_API_005
     @LargeTest
     public void testMediaVideoItemAudioFeatures() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -301,7 +296,6 @@
      * extractAudioWaveFormData
      */
 
-    // TODO : remove TC_API_006
     @LargeTest
     public void testMediaVideoItemGetWaveformData() throws Exception {
 
@@ -343,7 +337,6 @@
      * To Test the Media Video API : Get Effect, GetAllEffects, remove Effect
      */
 
-    // TODO : remove TC_API_007
     @LargeTest
     public void testMediaVideoItemEffect() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -384,7 +377,6 @@
      * To Test the Media Video API : Get Before and after transition
      */
 
-    // TODO : remove TC_API_008
     @LargeTest
     public void testMediaVideoItemTransitions() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -431,7 +423,6 @@
      *
      */
 
-    // TODO : remove TC_API_009
     @LargeTest
     public void testMediaVideoItemOverlays() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -474,7 +465,6 @@
     /**
      * To Test Creation of Media Image Item.
      */
-    // TODO : remove TC_API_010
     @LargeTest
     public void testMediaImageItem() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -511,7 +501,6 @@
     /**
      * To Test the Media Image API : Get and Set rendering Mode
      */
-    // TODO : remove TC_API_011
     @LargeTest
     public void testMediaImageItemRenderingModes() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -554,7 +543,6 @@
     /**
      * To Test the Media Image API : GetHeight and GetWidth
      */
-    // TODO : remove TC_API_012
     @LargeTest
     public void testMediaImageItemHeightWidth() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -576,7 +564,6 @@
     /**
      * To Test the Media Image API : Scaled Height and Scaled GetWidth
      */
-    // TODO : remove TC_API_013
     @LargeTest
     public void testMediaImageItemScaledHeightWidth() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -597,7 +584,6 @@
      * To Test the Media Image API : Get Effect, GetAllEffects, remove Effect
      */
 
-    // TODO : remove TC_API_014
     @LargeTest
     public void testMediaImageItemEffect() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -637,7 +623,6 @@
      * To Test the Media Image API : Get Before and after transition
      */
 
-    // TODO : remove TC_API_015
     @LargeTest
     public void testMediaImageItemTransitions() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -685,7 +670,6 @@
      * Overlay
      */
 
-    // TODO : remove TC_API_016
     @LargeTest
     public void testMediaImageItemOverlays() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -729,7 +713,6 @@
      * To test creation of Audio Track
      */
 
-    // TODO : remove TC_API_017
     @LargeTest
     public void testAudioTrack() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -756,7 +739,6 @@
     /**
      * To test creation of Audio Track with set extract boundaries
      */
-    // TODO : remove TC_API_018
     @LargeTest
     public void testAudioTrackExtractBoundaries() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -824,7 +806,6 @@
     /**
      * To test creation of Audio Track with set Start Time and Get Time
      */
-    // TODO : remove TC_API_019
     @LargeTest
     public void testAudioTrackSetGetTime() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -840,7 +821,6 @@
     /**
      * To Test the Audio Track API: Enable Ducking
      */
-    // TODO : remove TC_API_020
     @LargeTest
     public void testAudioTrackEnableDucking() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -910,7 +890,6 @@
     /**
      * To Test the Audio Track API: Looping
      */
-    // TODO : remove TC_API_021
     @LargeTest
     public void testAudioTrackLooping() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -928,7 +907,6 @@
     /**
      * To Test the Audio Track API:Extract waveform data
      */
-    // TODO : remove TC_API_022
 
     @LargeTest
     public void testAudioTrackWaveFormData() throws Exception {
@@ -984,7 +962,6 @@
     /**
      * To Test the Audio Track API: Mute
      */
-    // TODO : remove TC_API_023
     @LargeTest
     public void testAudioTrackMute() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -1001,7 +978,6 @@
     /**
      * To Test the Audio Track API: Get Volume and Set Volume
      */
-    // TODO : remove TC_API_024
     @LargeTest
     public void testAudioTrackGetSetVolume() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -1042,7 +1018,6 @@
     /**
      * To test Effect Color.
      */
-    // TODO : remove TC_API_025
     @LargeTest
     public void testAllEffects() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -1206,7 +1181,6 @@
     /**
      * To test Effect Color : Set duration and Get Duration
      */
-    // TODO : remove TC_API_026
     @LargeTest
     public void testEffectSetgetDuration() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -1246,7 +1220,6 @@
     /**
      * To test Effect Color : UNDEFINED color param value
      */
-    // TODO : remove TC_API_027
     @LargeTest
     public void testEffectUndefinedColorParam() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -1269,7 +1242,6 @@
     /**
      * To test Effect Color : with Invalid StartTime and Duration
      */
-    // TODO : remove TC_API_028
     @LargeTest
     public void testEffectInvalidStartTimeAndDuration() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -1315,7 +1287,6 @@
     /**
      * To test Effect : with NULL Media Item
      */
-    // TODO : remove TC_API_034
     @LargeTest
     public void testEffectNullMediaItem() throws Exception {
         boolean flagForException = false;
@@ -1331,7 +1302,6 @@
     /**
      * To test Effect : KenBurn Effect
      */
-    // TODO : remove TC_API_035
     @LargeTest
     public void testEffectKenBurn() throws Exception {
         // Test ken burn effect using a JPEG file.
@@ -1375,7 +1345,6 @@
      * To test KenBurnEffect : Set StartRect and EndRect
      */
 
-    // TODO : remove TC_API_036
     @LargeTest
     public void testEffectKenBurnSet() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -1443,7 +1412,6 @@
      * SPEED_UP/SPEED_DOWN/LINEAR/MIDDLE_SLOW/MIDDLE_FAST
      */
 
-    // TODO : remove TC_API_037
     @LargeTest
     public void testTransitionFadeBlack() throws Exception {
 
@@ -1591,7 +1559,6 @@
      * SPEED_UP/SPEED_DOWN/LINEAR/MIDDLE_SLOW/MIDDLE_FAST
      */
 
-    // TODO : remove TC_API_038
     @LargeTest
     public void testTransitionCrossFade() throws Exception {
 
@@ -1742,7 +1709,6 @@
      * ,DIRECTION_BOTTOM_OUT_TOP_IN
      */
 
-    // TODO : remove TC_API_039
     @LargeTest
     public void testTransitionSliding() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH +
@@ -1932,7 +1898,6 @@
      * SPEED_UP/SPEED_DOWN/LINEAR/MIDDLE_SLOW/MIDDLE_FAST
      */
 
-    // TODO : remove TC_API_040
     @LargeTest
     public void testTransitionAlpha() throws Exception {
 
@@ -2111,7 +2076,6 @@
      * To test Frame Overlay for Media Video Item
      */
 
-    // TODO : remove TC_API_041
     @LargeTest
     public void testFrameOverlayVideoItem() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH +
@@ -2147,7 +2111,6 @@
      * Duration
      */
 
-    // TODO : remove TC_API_042
     @LargeTest
     public void testFrameOverlaySetAndGet() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH +
@@ -2193,7 +2156,6 @@
      * Duration
      */
 
-    // TODO : remove TC_API_043
     @LargeTest
     public void testFrameOverlayInvalidTime() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH +
@@ -2242,7 +2204,6 @@
     /**
      * To test Frame Overlay for Media Image Item
      */
-    // TODO : remove TC_API_045
     @LargeTest
     public void testFrameOverlayImageItem() throws Exception {
         final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -2278,7 +2239,6 @@
      * Duration
      */
 
-    // TODO : remove TC_API_046
     @LargeTest
     public void testFrameOverlaySetAndGetImage() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -2321,7 +2281,6 @@
      * Duration
      */
 
-    // TODO : remove TC_API_047
     @LargeTest
     public void testFrameOverlayInvalidTimeImage() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -2370,7 +2329,6 @@
      * To Test Frame Overlay Media Image Item :JPG File
      */
 
-    // TODO : remove TC_API_048
     @LargeTest
     public void testFrameOverlayJPGImage() throws Exception {
 
@@ -2392,7 +2350,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_049
     @LargeTest
     public void testVideoEditorAPI() throws Exception {
 
@@ -2555,7 +2512,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_050
     @LargeTest
     public void testVideoLessThanAudio() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH
@@ -2583,7 +2539,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_051
     @LargeTest
     public void testVideoContentHD() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH
@@ -2609,7 +2564,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_052
     @LargeTest
     public void testRemoveAudioTrack() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -2638,7 +2592,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_053
     @LargeTest
     public void testAudioDuckingDisable() throws Exception {
         final String audioFileName = INPUT_FILE_PATH +
@@ -2653,8 +2606,6 @@
     }
 
 
-    // TODO : remove TC_API_054
-    /** This test case is added with Test case ID TC_API_010 */
 
       /**
      * To test: Need a basic test case for the get value for TransitionAlpha
@@ -2662,7 +2613,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_055
     @LargeTest
     public void testTransitionAlphaBasic() throws Exception {
 
@@ -2700,7 +2650,6 @@
      *
      * @throws Exception
      */
-    // TODO : remove TC_API_056
     @LargeTest
     public void testNullAPIs() throws Exception {
 
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorExportTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorExportTest.java
index 57a1c75..69ecf0d 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorExportTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorExportTest.java
@@ -91,7 +91,6 @@
     /**
      * To Test export : Merge and Trim different types of Video and Image files
      */
-    // TODO :remove TC_EXP_001
     @LargeTest
     public void testExportMergeTrim() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH
@@ -173,7 +172,6 @@
     /**
      *To Test export : With Effect and Overlays on Different Media Items
      */
-    // TODO :remove TC_EXP_002
     @LargeTest
     public void testExportEffectOverlay() throws Exception {
           final String videoItemFilename1 = INPUT_FILE_PATH
@@ -301,7 +299,6 @@
     /**
      * To test export : with Image with KenBurnEffect
      */
-    // TODO : remove TC_EXP_003
     @LargeTest
     public void testExportEffectKenBurn() throws Exception {
         final String imageItemFileName = INPUT_FILE_PATH + "IMG_640x480.jpg";
@@ -359,7 +356,6 @@
     /**
      * To Test Export : With Video and Image and An Audio BackGround Track
      */
-    // TODO : remove TC_EXP_004
     @LargeTest
     public void testExportAudio() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -420,7 +416,6 @@
     /**
      *To Test export : With Transition on Different Media Items
      */
-    // TODO :remove TC_EXP_005
     @LargeTest
     public void testExportTransition() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH
@@ -540,7 +535,6 @@
      *
      * @throws Exception
      */
-    // TODO :remove TC_EXP_006
     @LargeTest
     public void testExportWithoutMediaItems() throws Exception {
         boolean flagForException = false;
@@ -566,7 +560,6 @@
      *
      * @throws Exception
      */
-    // TODO :remove TC_EXP_007
     @LargeTest
     public void testExportWithoutMediaItemsAddRemove() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH +
@@ -621,7 +614,6 @@
      *
      * @throws Exception
      */
-    // TODO :remove TC_EXP_008
     @LargeTest
     public void testExportMMS() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorPreviewTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorPreviewTest.java
index 4181903..7965b0a 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorPreviewTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/videoeditor/VideoEditorPreviewTest.java
@@ -216,7 +216,6 @@
     /**
      *To test Preview : FULL Preview of current work (beginning till end)
      */
-    // TODO : remove TC_PRV_001
     @LargeTest
     public void testPreviewTheStoryBoard() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH
@@ -275,7 +274,6 @@
     /**
      * To test Preview : Preview of start + 10 sec till end of story board
      */
-    // TODO : remove TC_PRV_002
     @LargeTest
     public void testPreviewTheStoryBoardFromDuration() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH
@@ -336,7 +334,6 @@
     /**
      * To test Preview : Preview of current Effects applied
      */
-    // TODO : remove TC_PRV_003
     @LargeTest
     public void testPreviewOfEffects() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH +
@@ -394,7 +391,6 @@
      *To test Preview : Preview of current Transitions applied (with multiple
      * generatePreview)
      */
-    // TODO : remove TC_PRV_004
     @LargeTest
     public void testPreviewWithTransition() throws Exception {
 
@@ -547,7 +543,6 @@
     /**
      * To test Preview : Preview of current Overlay applied
      */
-    // TODO : remove TC_PRV_005
     @LargeTest
     public void testPreviewWithOverlay() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH
@@ -601,7 +596,6 @@
      * To test Preview : Preview of current Trim applied (with default aspect
      * ratio)
      */
-    // TODO : remove TC_PRV_006
     @LargeTest
     public void testPreviewWithTrim() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -625,7 +619,6 @@
      * applied
      */
 
-    // TODO : remove TC_PRV_007
     @LargeTest
     public void testPreviewWithOverlayEffectKenBurn() throws Exception {
 
@@ -684,7 +677,6 @@
     /**
      *To test Preview : Export during preview
      */
-    // TODO : remove TC_PRV_008
     @LargeTest
     public void testPreviewDuringExport() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -765,7 +757,6 @@
      * To test Preview : Preview of current Effects applied (with from time >
      * total duration)
      */
-    // TODO : remove TC_PRV_009
     @LargeTest
     public void testPreviewWithDurationGreaterThanMediaDuration()
         throws Exception {
@@ -826,7 +817,6 @@
      * To test Preview : Preview of current Effects applied (with Render Preview
      * Frame)
      */
-    // TODO : remove TC_PRV_010
     @LargeTest
     public void testPreviewWithRenderPreviewFrame() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
@@ -873,7 +863,6 @@
      * To test Preview : Preview of current work from selected jump location
      * till end with Audio Track
      */
-    // TODO : remove TC_PRV_011
     @LargeTest
     public void testPreviewWithEndAudioTrack() throws Exception {
         final String imageItemFilename1 = INPUT_FILE_PATH + "IMG_1600x1200.jpg";
@@ -917,7 +906,6 @@
     /**
      * To test render Preview Frame
      */
-    // TODO : remove TC_PRV_012
     @LargeTest
     public void testRenderPreviewFrame() throws Exception {
         final String videoItemFileName1 = INPUT_FILE_PATH
@@ -1031,7 +1019,6 @@
     /**
      * To Test Preview : Without any Media Items in the story Board
      */
-    // TODO : remove TC_PRV_013
     @LargeTest
     public void testStartPreviewWithoutMediaItems() throws Exception {
         boolean flagForException = false;
@@ -1064,7 +1051,6 @@
      * To Test Preview : Add Media and Remove Media Item (Without any Media
      * Items in the story Board)
      */
-    // TODO : remove TC_PRV_014
     @LargeTest
     public void testStartPreviewAddRemoveMediaItems() throws Exception {
         final String videoItemFilename1 = INPUT_FILE_PATH
@@ -1134,7 +1120,6 @@
      * To test Preview : Preview of current Effects applied (with Render Preview
      * Frame)
      */
-    // TODO : remove TC_PRV_015
     @LargeTest
     public void testPreviewWithRenderPreviewFrameWithoutGenerate() throws Exception {
         final String videoItemFileName = INPUT_FILE_PATH +
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/VideoEditorPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/VideoEditorPerformance.java
index 3d0be4f..6f1959c 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/VideoEditorPerformance.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/VideoEditorPerformance.java
@@ -931,7 +931,6 @@
     /**
      *To test ThumbnailList for H264
      */
-    // TODO : TC_PRF_12
     @LargeTest
     public void testThumbnailH264NonIFrame() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
@@ -962,7 +961,6 @@
     /**
      *To test ThumbnailList for H264
      */
-    // TODO : TC_PRF_13
     @LargeTest
     public void testThumbnailH264AnIFrame() throws Exception {
         final String videoItemFilename = INPUT_FILE_PATH +
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png
index f24d801..55272f5 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0_fully.png
index 66eb5db..e5e6305 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1.png
index edff74a..f595ae1 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png
index 1cdd4eb..f555fc9 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2.png
index 95fdaf9..ecf1349 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2_fully.png
index 8678e39..918a9f9 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3.png
index 1d2d290..f5d1479 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png
index c2e4b78..f58a19c 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png
index 51b839f..744b1fa 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_disconnected.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_idle.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_idle.png
index b20c5c7..bef4358 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_idle.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_wimax_signal_idle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png
index b0e1424..a2ba6c4 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png
index 797b1eb..00b560c 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png
index 7c479e8..fd8d2f2 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png
index c60def1..92364d2 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png
index 1cef87b..3b4aaa1 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png
index 61e0e95..8cea4e93f 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png
index 48c3490..873a317 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png
index 71205bf..94a4a35 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png
index e5b0e2d..d2381fcc 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png
index 5e74e44..93552cb 100644
--- a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..daf18c7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0.png
new file mode 100644
index 0000000..a0c7a99
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0_fully.png
new file mode 100644
index 0000000..b1f1e5b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1.png
new file mode 100644
index 0000000..8b31618
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1_fully.png
new file mode 100644
index 0000000..1a62682
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2.png
new file mode 100644
index 0000000..ff51551
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2_fully.png
new file mode 100644
index 0000000..0374142
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3.png
new file mode 100644
index 0000000..8f881f2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3_fully.png
new file mode 100644
index 0000000..7870cee1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_disconnected.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_disconnected.png
new file mode 100644
index 0000000..65404c2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_disconnected.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_idle.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_idle.png
new file mode 100644
index 0000000..327f89d
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_wimax_signal_idle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png
index 76b272e..d93a661 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png
index 18c603d..b39cc04 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png
index 89274b1..4305351 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png
index ae8e70a..4305be2 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png
index 35ec9bd..beb641b 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png
index b082e9f..7b8ddc2 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png
index a2c7ed8..a4028cd 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png
index e12ecbf..fad1873 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png
index f08b75e..b5ed22b 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png
index 12581d5..cca7bf3 100644
--- a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..5292998
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0.png
index a290cf0..ac322ba 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0_fully.png
index 09314e9..ac322ba 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1.png
index 90de934..f139bbe 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1_fully.png
index cdcac61..af67018 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2.png
index 570a9b5..fe404e2 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2_fully.png
index 68f3075..1ffa9b6 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3.png
index 07b03fa..75cd8ee 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3_fully.png
index 9dff62d..666d1f6 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4.png
index f855c1c..da9607b 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4_fully.png
index 119ce32..d05297f 100644
--- a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..3733a38
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0.png
index 926b081..f931c60 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0_fully.png
index 4498bed..f931c60 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1.png
index 60b00a8..398f4d5 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1_fully.png
index 8e9be27..a0fc3f2 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2.png
index 014d838..5fe96a3 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2_fully.png
index 1755088..8a66255 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3.png
index 44e7905..e785a7a 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3_fully.png
index bfc17dd..63be95d 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4.png
index e39d7d7..533bcdc 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4_fully.png
index 466d3b5..566172e 100644
--- a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..ab718ad
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0.png
index 1744f65..ccf1ba1 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0_fully.png
index 6270e51..ccf1ba1 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1.png
index b47624f..07937fe 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1_fully.png
index 9fd562d..ba1b077 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2.png
index 42630a2..a705a89 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2_fully.png
index 1777ce7..0187d12 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3.png
index d35d546..0ed7d6f4 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3_fully.png
index 324ec32..24a6e5a 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4.png
index 54f3ae7..1a47801 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4_fully.png
index 290dafa..d9648b6f 100644
--- a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..023bbe6
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0.png
new file mode 100644
index 0000000..7a8d1f3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0_fully.png
new file mode 100644
index 0000000..5f86bbb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1.png
new file mode 100644
index 0000000..70e2011
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1_fully.png
new file mode 100644
index 0000000..c1d1cc3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2.png
new file mode 100644
index 0000000..c62d977
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2_fully.png
new file mode 100644
index 0000000..86d30df
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3.png
new file mode 100644
index 0000000..b112748
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3_fully.png
new file mode 100644
index 0000000..bfc7d81
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_disconnected.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_disconnected.png
new file mode 100644
index 0000000..bea643f3a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_disconnected.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_idle.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_idle.png
new file mode 100644
index 0000000..a8a89d6
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_wimax_signal_idle.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png
index 9c80517..0a28885 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png
index b144e18..bbe70cc 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_0_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png
index 32762da..9943613 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png
index ae02c8f..e25a55c 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_1_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png
index f95f677..1fc1775 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png
index 23343e9..d1aefca 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_2_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png
index d72d42b..82b9741 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png
index 3e5eaf4..c8c2c63 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_3_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png
index bf8ca9f..9f4979c 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png
index e9de257..b2e64b9 100644
--- a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_4_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..3e7fefd
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml
index c9b1673..ef95936 100644
--- a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml
+++ b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml
@@ -44,12 +44,13 @@
             <FrameLayout
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
+                android:layout_gravity="center_vertical"
                 >
                 <ImageView
                     android:id="@+id/bluetooth"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
-                    android:scaleType="centerInside"
+                    android:paddingRight="16dp"
                     android:visibility="gone"
                     android:contentDescription="@null"
                     android:layout_gravity="center_vertical"
@@ -61,7 +62,6 @@
                 android:id="@+id/mobile_icon"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
-                android:paddingRight="4dp"
                 android:layout_gravity="center_vertical"
                 >
 
@@ -86,8 +86,8 @@
                 android:layout_gravity="left|center_vertical"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:paddingRight="8dp"
-                android:layout_weight="1"
+                android:paddingRight="12dp"
+                android:paddingLeft="6dp"
                 android:singleLine="true"
                 android:ellipsize="end"
                 android:text="@string/status_bar_settings_settings_button"
@@ -98,7 +98,6 @@
                 android:id="@+id/wifi_icon"
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
-                android:paddingRight="4dp"
                 android:layout_gravity="center_vertical"
                 >
 
@@ -123,7 +122,8 @@
                 android:layout_gravity="left|center_vertical"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:paddingRight="8dp"
+                android:paddingLeft="6dp"
+                android:paddingRight="12dp"
                 android:singleLine="true"
                 android:ellipsize="end"
                 android:text="@string/status_bar_settings_settings_button"
@@ -136,18 +136,17 @@
                 android:scaleType="centerInside"
                 android:layout_gravity="center_vertical"
                 android:layout_alignBaseline="@id/wifi_signal"
-                android:paddingLeft="8dp"
-                android:paddingRight="8dp"
+                android:paddingRight="6dp"
                 android:contentDescription="@null"
                 />
 
             <TextView
                 android:id="@+id/battery_text"
                 style="@style/StatusBarNotificationText"
-                android:layout_width="56dp"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="left|center_vertical"
-                android:paddingRight="8dp"
+                android:paddingRight="2dp"
                 android:singleLine="true"
                 android:text="@string/status_bar_settings_settings_button"
                 />
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 975c372..cc07240 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -55,6 +55,7 @@
     float mGlowAlpha = 0f, mGlowScale = 1f, mDrawingAlpha = 1f;
     boolean mSupportsLongpress = true;
     RectF mRect = new RectF(0f,0f,0f,0f);
+    AnimatorSet mPressedAnim;
 
     Runnable mCheckLongPress = new Runnable() {
         public void run() {
@@ -173,7 +174,10 @@
     public void setPressed(boolean pressed) {
         if (mGlowBG != null) {
             if (pressed != isPressed()) {
-                AnimatorSet as = new AnimatorSet();
+                if (mPressedAnim != null && mPressedAnim.isRunning()) {
+                    mPressedAnim.cancel();
+                }
+                final AnimatorSet as = mPressedAnim = new AnimatorSet();
                 if (pressed) {
                     if (mGlowScale < GLOW_MAX_SCALE_FACTOR) 
                         mGlowScale = GLOW_MAX_SCALE_FACTOR;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index d9114a5..d09e680 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -457,13 +457,13 @@
     private final void updateTelephonySignalStrength() {
         if (!hasService()) {
             if (CHATTY) Slog.d(TAG, "updateTelephonySignalStrength: !hasService()");
-            mPhoneSignalIconId = R.drawable.stat_sys_signal_0;
-            mDataSignalIconId = R.drawable.stat_sys_signal_0;
+            mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
+            mDataSignalIconId = R.drawable.stat_sys_signal_null;
         } else {
             if (mSignalStrength == null) {
                 if (CHATTY) Slog.d(TAG, "updateTelephonySignalStrength: mSignalStrength == null");
-                mPhoneSignalIconId = R.drawable.stat_sys_signal_0;
-                mDataSignalIconId = R.drawable.stat_sys_signal_0;
+                mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
+                mDataSignalIconId = R.drawable.stat_sys_signal_null;
                 mContentDescriptionPhoneSignal = mContext.getString(
                         AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0]);
             } else {
@@ -888,7 +888,9 @@
         String mobileLabel = "";
         int N;
 
-        if (mDataConnected) {
+        if (!mHasMobileDataFeature) {
+            mDataSignalIconId = mPhoneSignalIconId = 0;
+        } else if (mDataConnected) {
             mobileLabel = mNetworkName;
             if (DEBUG) {
                 mobileLabel += "yyyyYYYYyyyyYYYY";
@@ -913,6 +915,9 @@
             combinedActivityIconId = mMobileActivityIconId;
             combinedSignalIconId = mDataSignalIconId; // set by updateDataIcon()
             mContentDescriptionCombinedSignal = mContentDescriptionDataType;
+        } else {
+            mobileLabel = mHasMobileDataFeature ?
+                context.getString(R.string.status_bar_settings_signal_meter_disconnected) : "";
         }
 
         if (mWifiConnected) {
@@ -1026,8 +1031,13 @@
             N = mPhoneSignalIconViews.size();
             for (int i=0; i<N; i++) {
                 final ImageView v = mPhoneSignalIconViews.get(i);
-                v.setImageResource(mPhoneSignalIconId);
-                v.setContentDescription(mContentDescriptionPhoneSignal);
+                if (mPhoneSignalIconId == 0) {
+                    v.setVisibility(View.GONE);
+                } else {
+                    v.setVisibility(View.VISIBLE);
+                    v.setImageResource(mPhoneSignalIconId);
+                    v.setContentDescription(mContentDescriptionPhoneSignal);
+                }
             }
         }
 
@@ -1133,14 +1143,24 @@
         N = mWifiLabelViews.size();
         for (int i=0; i<N; i++) {
             TextView v = mWifiLabelViews.get(i);
-            v.setText(wifiLabel);
+            if ("".equals(wifiLabel)) {
+                v.setVisibility(View.GONE);
+            } else {
+                v.setVisibility(View.VISIBLE);
+                v.setText(wifiLabel);
+            }
         }
         
         // mobile label
         N = mMobileLabelViews.size();
         for (int i=0; i<N; i++) {
             TextView v = mMobileLabelViews.get(i);
-            v.setText(mobileLabel);
+            if ("".equals(mobileLabel)) {
+                v.setVisibility(View.GONE);
+            } else {
+                v.setVisibility(View.VISIBLE);
+                v.setText(mobileLabel);
+            }
         }
     }
 
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index b440bde..43a34d0 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -3647,6 +3647,12 @@
         }
     };
 
+    public void lockNow() {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
+        mHandler.removeCallbacks(mScreenLockTimeout);
+        mHandler.post(mScreenLockTimeout);
+    }
+
     private void updateLockScreenTimeout() {
         synchronized (mScreenLockTimeout) {
             boolean enable = (mAllowLockscreenWhenOn && mScreenOnEarly && mKeyguardMediator.isSecure());
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index fb2a072..f5892d4 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -37,8 +37,6 @@
 #include <cutils/properties.h>
 #include <cutils/compiler.h>
 
-#include <media/AudioTrack.h>
-#include <media/AudioRecord.h>
 #include <media/IMediaPlayerService.h>
 #include <media/IMediaDeathNotifier.h>
 
@@ -331,7 +329,7 @@
 
 status_t AudioFlinger::dump(int fd, const Vector<String16>& args)
 {
-    if (checkCallingPermission(String16("android.permission.DUMP")) == false) {
+    if (!checkCallingPermission(String16("android.permission.DUMP"))) {
         dumpPermissionDenial(fd, args);
     } else {
         // get state of hardware lock
@@ -382,7 +380,7 @@
         pid_t pid,
         audio_stream_type_t streamType,
         uint32_t sampleRate,
-        uint32_t format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         uint32_t flags,
@@ -502,13 +500,13 @@
     return thread->channelCount();
 }
 
-uint32_t AudioFlinger::format(int output) const
+audio_format_t AudioFlinger::format(int output) const
 {
     Mutex::Autolock _l(mLock);
     PlaybackThread *thread = checkPlaybackThread_l(output);
     if (thread == NULL) {
         ALOGW("format() unknown thread %d", output);
-        return 0;
+        return AUDIO_FORMAT_INVALID;
     }
     return thread->format();
 }
@@ -801,7 +799,7 @@
         thread = checkPlaybackThread_l(ioHandle);
         if (thread == NULL) {
             thread = checkRecordThread_l(ioHandle);
-        } else if (thread.get() == primaryPlaybackThread_l()) {
+        } else if (thread == primaryPlaybackThread_l()) {
             // indicate output device change to all input threads for pre processing
             AudioParameter param = AudioParameter(keyValuePairs);
             int value;
@@ -849,7 +847,7 @@
     return String8("");
 }
 
-size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, int format, int channelCount)
+size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount)
 {
     status_t ret = initCheck();
     if (ret != NO_ERROR) {
@@ -990,7 +988,7 @@
 AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, int id, uint32_t device)
     :   Thread(false),
         mAudioFlinger(audioFlinger), mSampleRate(0), mFrameCount(0), mChannelCount(0),
-        mFrameSize(1), mFormat(0), mStandby(false), mId(id), mExiting(false),
+        mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mStandby(false), mId(id), mExiting(false),
         mDevice(device)
 {
     mDeathRecipient = new PMDeathRecipient(this);
@@ -1033,7 +1031,7 @@
     return (int)mChannelCount;
 }
 
-uint32_t AudioFlinger::ThreadBase::format() const
+audio_format_t AudioFlinger::ThreadBase::format() const
 {
     return mFormat;
 }
@@ -1495,7 +1493,7 @@
         const sp<AudioFlinger::Client>& client,
         audio_stream_type_t streamType,
         uint32_t sampleRate,
-        uint32_t format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         const sp<IMemory>& sharedBuffer,
@@ -1849,7 +1847,7 @@
 
 AudioFlinger::MixerThread::MixerThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output, int id, uint32_t device)
     :   PlaybackThread(audioFlinger, output, id, device),
-        mAudioMixer(NULL)
+        mAudioMixer(NULL), mPrevMixerStatus(MIXER_IDLE)
 {
     mType = ThreadBase::MIXER;
     mAudioMixer = new AudioMixer(mFrameCount, mSampleRate);
@@ -1962,7 +1960,8 @@
                     ALOGV("MixerThread %p TID %d waking up\n", this, gettid());
                     acquireWakeLock_l();
 
-                    if (mMasterMute == false) {
+                    mPrevMixerStatus = MIXER_IDLE;
+                    if (!mMasterMute) {
                         char value[PROPERTY_VALUE_MAX];
                         property_get("ro.audio.silent", value, "0");
                         if (atoi(value)) {
@@ -2121,11 +2120,11 @@
         // make sure that we have enough frames to mix one full buffer.
         // enforce this condition only once to enable draining the buffer in case the client
         // app does not call stop() and relies on underrun to stop:
-        // hence the test on (track->mRetryCount >= kMaxTrackRetries) meaning the track was mixed
+        // hence the test on (mPrevMixerStatus == MIXER_TRACKS_READY) meaning the track was mixed
         // during last round
         uint32_t minFrames = 1;
         if (!track->isStopped() && !track->isPausing() &&
-                (track->mRetryCount >= kMaxTrackRetries)) {
+                (mPrevMixerStatus == MIXER_TRACKS_READY)) {
             if (t->sampleRate() == (int)mSampleRate) {
                 minFrames = mFrameCount;
             } else {
@@ -2274,7 +2273,13 @@
 
             // reset retry count
             track->mRetryCount = kMaxTrackRetries;
-            mixerStatus = MIXER_TRACKS_READY;
+            // If one track is ready, set the mixer ready if:
+            //  - the mixer was not ready during previous round OR
+            //  - no other track is not ready
+            if (mPrevMixerStatus != MIXER_TRACKS_READY ||
+                    mixerStatus != MIXER_TRACKS_ENABLED) {
+                mixerStatus = MIXER_TRACKS_READY;
+            }
         } else {
             //ALOGV("track %d u=%08x, s=%08x [NOT READY] on thread %p", name, cblk->user, cblk->server, this);
             if (track->isStopped()) {
@@ -2292,7 +2297,11 @@
                     tracksToRemove->add(track);
                     // indicate to client process that the track was disabled because of underrun
                     android_atomic_or(CBLK_DISABLED_ON, &cblk->flags);
-                } else if (mixerStatus != MIXER_TRACKS_READY) {
+                // If one track is not ready, mark the mixer also not ready if:
+                //  - the mixer was ready during previous round OR
+                //  - no other track is ready
+                } else if (mPrevMixerStatus == MIXER_TRACKS_READY ||
+                                mixerStatus != MIXER_TRACKS_READY) {
                     mixerStatus = MIXER_TRACKS_ENABLED;
                 }
             }
@@ -2326,6 +2335,7 @@
         memset(mMixBuffer, 0, mFrameCount * mChannelCount * sizeof(int16_t));
     }
 
+    mPrevMixerStatus = mixerStatus;
     return mixerStatus;
 }
 
@@ -2382,7 +2392,7 @@
             reconfig = true;
         }
         if (param.getInt(String8(AudioParameter::keyFormat), value) == NO_ERROR) {
-            if (value != AUDIO_FORMAT_PCM_16_BIT) {
+            if ((audio_format_t) value != AUDIO_FORMAT_PCM_16_BIT) {
                 status = BAD_VALUE;
             } else {
                 reconfig = true;
@@ -2659,7 +2669,7 @@
                     ALOGV("DirectOutputThread %p TID %d waking up in active mode\n", this, gettid());
                     acquireWakeLock_l();
 
-                    if (mMasterMute == false) {
+                    if (!mMasterMute) {
                         char value[PROPERTY_VALUE_MAX];
                         property_get("ro.audio.silent", value, "0");
                         if (atoi(value)) {
@@ -3054,7 +3064,8 @@
                     ALOGV("DuplicatingThread %p TID %d waking up\n", this, gettid());
                     acquireWakeLock_l();
 
-                    if (mMasterMute == false) {
+                    mPrevMixerStatus = MIXER_IDLE;
+                    if (!mMasterMute) {
                         char value[PROPERTY_VALUE_MAX];
                         property_get("ro.audio.silent", value, "0");
                         if (atoi(value)) {
@@ -3220,7 +3231,7 @@
             const wp<ThreadBase>& thread,
             const sp<Client>& client,
             uint32_t sampleRate,
-            uint32_t format,
+            audio_format_t format,
             uint32_t channelMask,
             int frameCount,
             uint32_t flags,
@@ -3382,7 +3393,7 @@
             const sp<Client>& client,
             audio_stream_type_t streamType,
             uint32_t sampleRate,
-            uint32_t format,
+            audio_format_t format,
             uint32_t channelMask,
             int frameCount,
             const sp<IMemory>& sharedBuffer,
@@ -3688,7 +3699,7 @@
             const wp<ThreadBase>& thread,
             const sp<Client>& client,
             uint32_t sampleRate,
-            uint32_t format,
+            audio_format_t format,
             uint32_t channelMask,
             int frameCount,
             uint32_t flags,
@@ -3801,7 +3812,7 @@
             const wp<ThreadBase>& thread,
             DuplicatingThread *sourceThread,
             uint32_t sampleRate,
-            uint32_t format,
+            audio_format_t format,
             uint32_t channelMask,
             int frameCount)
     :   Track(thread, NULL, AUDIO_STREAM_CNT, sampleRate, format, channelMask, frameCount, NULL, 0),
@@ -3896,7 +3907,7 @@
         if (mOutBuffer.frameCount == 0) {
             mOutBuffer.frameCount = pInBuffer->frameCount;
             nsecs_t startTime = systemTime();
-            if (obtainBuffer(&mOutBuffer, waitTimeLeftMs) == (status_t)AudioTrack::NO_MORE_BUFFERS) {
+            if (obtainBuffer(&mOutBuffer, waitTimeLeftMs) == (status_t)NO_MORE_BUFFERS) {
                 ALOGV ("OutputTrack::write() %p thread %p no more output buffers", this, mThread.unsafe_get());
                 outputBufferFull = true;
                 break;
@@ -3987,11 +3998,11 @@
             active = mActive;
             if (CC_UNLIKELY(!active)) {
                 ALOGV("Not active and NO_MORE_BUFFERS");
-                return AudioTrack::NO_MORE_BUFFERS;
+                return NO_MORE_BUFFERS;
             }
             result = cblk->cv.waitRelative(cblk->lock, milliseconds(waitTimeMs));
             if (result != NO_ERROR) {
-                return AudioTrack::NO_MORE_BUFFERS;
+                return NO_MORE_BUFFERS;
             }
             // read the server count again
         start_loop_here:
@@ -4000,7 +4011,7 @@
     }
 
 //    if (framesAvail < framesReq) {
-//        return AudioTrack::NO_MORE_BUFFERS;
+//        return NO_MORE_BUFFERS;
 //    }
 
     if (framesReq > framesAvail) {
@@ -4134,7 +4145,7 @@
         pid_t pid,
         int input,
         uint32_t sampleRate,
-        uint32_t format,
+        audio_format_t format,
         uint32_t channelMask,
         int frameCount,
         uint32_t flags,
@@ -4479,7 +4490,7 @@
 sp<AudioFlinger::RecordThread::RecordTrack>  AudioFlinger::RecordThread::createRecordTrack_l(
         const sp<AudioFlinger::Client>& client,
         uint32_t sampleRate,
-        int format,
+        audio_format_t format,
         int channelMask,
         int frameCount,
         uint32_t flags,
@@ -4691,7 +4702,7 @@
         String8 keyValuePair = mNewParameters[0];
         AudioParameter param = AudioParameter(keyValuePair);
         int value;
-        int reqFormat = mFormat;
+        audio_format_t reqFormat = mFormat;
         int reqSamplingRate = mReqSampleRate;
         int reqChannelCount = mReqChannelCount;
 
@@ -4700,7 +4711,7 @@
             reconfig = true;
         }
         if (param.getInt(String8(AudioParameter::keyFormat), value) == NO_ERROR) {
-            reqFormat = value;
+            reqFormat = (audio_format_t) value;
             reconfig = true;
         }
         if (param.getInt(String8(AudioParameter::keyChannels), value) == NO_ERROR) {
@@ -4911,7 +4922,7 @@
 
 int AudioFlinger::openOutput(uint32_t *pDevices,
                                 uint32_t *pSamplingRate,
-                                uint32_t *pFormat,
+                                audio_format_t *pFormat,
                                 uint32_t *pChannels,
                                 uint32_t *pLatencyMs,
                                 uint32_t flags)
@@ -4920,7 +4931,7 @@
     PlaybackThread *thread = NULL;
     mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
     uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0;
-    uint32_t format = pFormat ? *pFormat : 0;
+    audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
     uint32_t channels = pChannels ? *pChannels : 0;
     uint32_t latency = pLatencyMs ? *pLatencyMs : 0;
     audio_stream_out_t *outStream;
@@ -4943,7 +4954,7 @@
     if (outHwDev == NULL)
         return 0;
 
-    status = outHwDev->open_output_stream(outHwDev, *pDevices, (int *)&format,
+    status = outHwDev->open_output_stream(outHwDev, *pDevices, &format,
                                           &channels, &samplingRate, &outStream);
     ALOGV("openOutput() openOutputStream returned output %p, SamplingRate %d, Format %d, Channels %x, status %d",
             outStream,
@@ -5071,17 +5082,17 @@
 
 int AudioFlinger::openInput(uint32_t *pDevices,
                                 uint32_t *pSamplingRate,
-                                uint32_t *pFormat,
+                                audio_format_t *pFormat,
                                 uint32_t *pChannels,
                                 uint32_t acoustics)
 {
     status_t status;
     RecordThread *thread = NULL;
     uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0;
-    uint32_t format = pFormat ? *pFormat : 0;
+    audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
     uint32_t channels = pChannels ? *pChannels : 0;
     uint32_t reqSamplingRate = samplingRate;
-    uint32_t reqFormat = format;
+    audio_format_t reqFormat = format;
     uint32_t reqChannels = channels;
     audio_stream_in_t *inStream;
     audio_hw_device_t *inHwDev;
@@ -5096,7 +5107,7 @@
     if (inHwDev == NULL)
         return 0;
 
-    status = inHwDev->open_input_stream(inHwDev, *pDevices, (int *)&format,
+    status = inHwDev->open_input_stream(inHwDev, *pDevices, &format,
                                         &channels, &samplingRate,
                                         (audio_in_acoustics_t)acoustics,
                                         &inStream);
@@ -5116,7 +5127,7 @@
         (samplingRate <= 2 * reqSamplingRate) &&
         (popcount(channels) < 3) && (popcount(reqChannels) < 3)) {
         ALOGV("openInput() reopening with proposed sampling rate and channels");
-        status = inHwDev->open_input_stream(inHwDev, *pDevices, (int *)&format,
+        status = inHwDev->open_input_stream(inHwDev, *pDevices, &format,
                                             &channels, &samplingRate,
                                             (audio_in_acoustics_t)acoustics,
                                             &inStream);
@@ -5747,7 +5758,7 @@
             effect = chain->getEffectFromDesc_l(desc);
         }
 
-        ALOGV("createEffect_l() got effect %p on chain %p", effect == 0 ? 0 : effect.get(), chain.get());
+        ALOGV("createEffect_l() got effect %p on chain %p", effect.get(), chain.get());
 
         if (effect == 0) {
             int id = mAudioFlinger->nextUniqueId();
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 275f40e..48edfcd 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -26,7 +26,7 @@
 #include <media/IAudioFlingerClient.h>
 #include <media/IAudioTrack.h>
 #include <media/IAudioRecord.h>
-#include <media/AudioTrack.h>
+#include <media/AudioSystem.h>
 
 #include <utils/Atomic.h>
 #include <utils/Errors.h>
@@ -72,7 +72,7 @@
                                 pid_t pid,
                                 audio_stream_type_t streamType,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -83,7 +83,7 @@
 
     virtual     uint32_t    sampleRate(int output) const;
     virtual     int         channelCount(int output) const;
-    virtual     uint32_t    format(int output) const;
+    virtual     audio_format_t format(int output) const;
     virtual     size_t      frameCount(int output) const;
     virtual     uint32_t    latency(int output) const;
 
@@ -109,12 +109,12 @@
 
     virtual     void        registerClient(const sp<IAudioFlingerClient>& client);
 
-    virtual     size_t      getInputBufferSize(uint32_t sampleRate, int format, int channelCount);
+    virtual     size_t      getInputBufferSize(uint32_t sampleRate, audio_format_t format, int channelCount);
     virtual     unsigned int  getInputFramesLost(int ioHandle);
 
     virtual int openOutput(uint32_t *pDevices,
                                     uint32_t *pSamplingRate,
-                                    uint32_t *pFormat,
+                                    audio_format_t *pFormat,
                                     uint32_t *pChannels,
                                     uint32_t *pLatencyMs,
                                     uint32_t flags);
@@ -129,7 +129,7 @@
 
     virtual int openInput(uint32_t *pDevices,
                             uint32_t *pSamplingRate,
-                            uint32_t *pFormat,
+                            audio_format_t *pFormat,
                             uint32_t *pChannels,
                             uint32_t acoustics);
 
@@ -189,7 +189,7 @@
                                 pid_t pid,
                                 int input,
                                 uint32_t sampleRate,
-                                uint32_t format,
+                                audio_format_t format,
                                 uint32_t channelMask,
                                 int frameCount,
                                 uint32_t flags,
@@ -207,6 +207,7 @@
                 bool        btNrecIsOff() { return mBtNrecIsOff; }
 
 private:
+
                             AudioFlinger();
     virtual                 ~AudioFlinger();
 
@@ -315,7 +316,7 @@
                                 TrackBase(const wp<ThreadBase>& thread,
                                         const sp<Client>& client,
                                         uint32_t sampleRate,
-                                        uint32_t format,
+                                        audio_format_t format,
                                         uint32_t channelMask,
                                         int frameCount,
                                         uint32_t flags,
@@ -343,7 +344,7 @@
             virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer) = 0;
             virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);
 
-            uint32_t format() const {
+            audio_format_t format() const {
                 return mFormat;
             }
 
@@ -376,7 +377,7 @@
             // we don't really need a lock for these
             int                 mState;
             int                 mClientTid;
-            uint32_t            mFormat;
+            audio_format_t      mFormat;
             uint32_t            mFlags;
             int                 mSessionId;
             uint8_t             mChannelCount;
@@ -410,7 +411,7 @@
                     int         type() const { return mType; }
                     uint32_t    sampleRate() const;
                     int         channelCount() const;
-                    uint32_t    format() const;
+                    audio_format_t format() const;
                     size_t      frameCount() const;
                     void        wakeUp()    { mWaitWorkCV.broadcast(); }
                     void        exit();
@@ -537,7 +538,7 @@
                     uint32_t                mChannelMask;
                     uint16_t                mChannelCount;
                     size_t                  mFrameSize;
-                    uint32_t                mFormat;
+                    audio_format_t          mFormat;
                     Condition               mParamCond;
                     Vector<String8>         mNewParameters;
                     status_t                mParamStatus;
@@ -575,7 +576,7 @@
                                         const sp<Client>& client,
                                         audio_stream_type_t streamType,
                                         uint32_t sampleRate,
-                                        uint32_t format,
+                                        audio_format_t format,
                                         uint32_t channelMask,
                                         int frameCount,
                                         const sp<IMemory>& sharedBuffer,
@@ -660,7 +661,7 @@
                                 OutputTrack(  const wp<ThreadBase>& thread,
                                         DuplicatingThread *sourceThread,
                                         uint32_t sampleRate,
-                                        uint32_t format,
+                                        audio_format_t format,
                                         uint32_t channelMask,
                                         int frameCount);
                                 ~OutputTrack();
@@ -674,6 +675,10 @@
 
         private:
 
+            enum {
+                NO_MORE_BUFFERS = 0x80000001,   // same in AudioTrack.h, ok to be different value
+            };
+
             status_t            obtainBuffer(AudioBufferProvider::Buffer* buffer, uint32_t waitTimeMs);
             void                clearBufferQueue();
 
@@ -715,7 +720,7 @@
                                     const sp<AudioFlinger::Client>& client,
                                     audio_stream_type_t streamType,
                                     uint32_t sampleRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channelMask,
                                     int frameCount,
                                     const sp<IMemory>& sharedBuffer,
@@ -830,7 +835,9 @@
         virtual     uint32_t    idleSleepTimeUs();
         virtual     uint32_t    suspendSleepTimeUs();
 
-        AudioMixer*                     mAudioMixer;
+                    AudioMixer* mAudioMixer;
+                    uint32_t    mPrevMixerStatus; // previous status (mixer_state) returned by
+                                                  // prepareTracks_l()
     };
 
     class DirectOutputThread : public PlaybackThread {
@@ -933,7 +940,7 @@
                                 RecordTrack(const wp<ThreadBase>& thread,
                                         const sp<Client>& client,
                                         uint32_t sampleRate,
-                                        uint32_t format,
+                                        audio_format_t format,
                                         uint32_t channelMask,
                                         int frameCount,
                                         uint32_t flags,
@@ -977,7 +984,7 @@
                 sp<AudioFlinger::RecordThread::RecordTrack>  createRecordTrack_l(
                         const sp<AudioFlinger::Client>& client,
                         uint32_t sampleRate,
-                        int format,
+                        audio_format_t format,
                         int channelMask,
                         int frameCount,
                         uint32_t flags,
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp
index fcf014f..28b1c89 100644
--- a/services/audioflinger/AudioPolicyService.cpp
+++ b/services/audioflinger/AudioPolicyService.cpp
@@ -43,11 +43,11 @@
 
 namespace android {
 
-static const char *kDeadlockedString = "AudioPolicyService may be deadlocked\n";
-static const char *kCmdDeadlockedString = "AudioPolicyService command thread may be deadlocked\n";
+static const char kDeadlockedString[] = "AudioPolicyService may be deadlocked\n";
+static const char kCmdDeadlockedString[] = "AudioPolicyService command thread may be deadlocked\n";
 
 static const int kDumpLockRetries = 50;
-static const int kDumpLockSleep = 20000;
+static const int kDumpLockSleepUs = 20000;
 
 static bool checkPermission() {
     if (getpid() == IPCThreadState::self()->getCallingPid()) return true;
@@ -207,19 +207,6 @@
     return NO_ERROR;
 }
 
-status_t AudioPolicyService::setRingerMode(uint32_t mode, uint32_t mask)
-{
-    if (mpAudioPolicy == NULL) {
-        return NO_INIT;
-    }
-    if (!checkPermission()) {
-        return PERMISSION_DENIED;
-    }
-
-    mpAudioPolicy->set_ringer_mode(mpAudioPolicy, mode, mask);
-    return NO_ERROR;
-}
-
 status_t AudioPolicyService::setForceUse(audio_policy_force_use_t usage,
                                          audio_policy_forced_cfg_t config)
 {
@@ -254,7 +241,7 @@
 
 audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream,
                                     uint32_t samplingRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channels,
                                     audio_policy_output_flags_t flags)
 {
@@ -302,7 +289,7 @@
 
 audio_io_handle_t AudioPolicyService::getInput(int inputSource,
                                     uint32_t samplingRate,
-                                    uint32_t format,
+                                    audio_format_t format,
                                     uint32_t channels,
                                     audio_in_acoustics_t acoustics,
                                     int audioSession)
@@ -563,7 +550,7 @@
             locked = true;
             break;
         }
-        usleep(kDumpLockSleep);
+        usleep(kDumpLockSleepUs);
     }
     return locked;
 }
@@ -587,7 +574,7 @@
 
 status_t AudioPolicyService::dump(int fd, const Vector<String16>& args)
 {
-    if (checkCallingPermission(String16("android.permission.DUMP")) == false) {
+    if (!checkCallingPermission(String16("android.permission.DUMP"))) {
         dumpPermissionDenial(fd);
     } else {
         bool locked = tryLock(mLock);
@@ -1069,7 +1056,7 @@
 // Audio pre-processing configuration
 // ----------------------------------------------------------------------------
 
-const char *AudioPolicyService::kInputSourceNames[AUDIO_SOURCE_CNT -1] = {
+/*static*/ const char * const AudioPolicyService::kInputSourceNames[AUDIO_SOURCE_CNT -1] = {
     MIC_SRC_TAG,
     VOICE_UL_SRC_TAG,
     VOICE_DL_SRC_TAG,
@@ -1365,7 +1352,7 @@
 static audio_io_handle_t aps_open_output(void *service,
                                              uint32_t *pDevices,
                                              uint32_t *pSamplingRate,
-                                             uint32_t *pFormat,
+                                             audio_format_t *pFormat,
                                              uint32_t *pChannels,
                                              uint32_t *pLatencyMs,
                                              audio_policy_output_flags_t flags)
@@ -1426,7 +1413,7 @@
 static audio_io_handle_t aps_open_input(void *service,
                                             uint32_t *pDevices,
                                             uint32_t *pSamplingRate,
-                                            uint32_t *pFormat,
+                                            audio_format_t *pFormat,
                                             uint32_t *pChannels,
                                             uint32_t acoustics)
 {
diff --git a/services/audioflinger/AudioPolicyService.h b/services/audioflinger/AudioPolicyService.h
index 0715790..9811670 100644
--- a/services/audioflinger/AudioPolicyService.h
+++ b/services/audioflinger/AudioPolicyService.h
@@ -59,12 +59,11 @@
                                                                 audio_devices_t device,
                                                                 const char *device_address);
     virtual status_t setPhoneState(audio_mode_t state);
-    virtual status_t setRingerMode(uint32_t mode, uint32_t mask);
     virtual status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config);
     virtual audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage);
     virtual audio_io_handle_t getOutput(audio_stream_type_t stream,
                                         uint32_t samplingRate = 0,
-                                        uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                        audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                         uint32_t channels = 0,
                                         audio_policy_output_flags_t flags =
                                             AUDIO_POLICY_OUTPUT_FLAG_INDIRECT);
@@ -77,7 +76,7 @@
     virtual void releaseOutput(audio_io_handle_t output);
     virtual audio_io_handle_t getInput(int inputSource,
                                     uint32_t samplingRate = 0,
-                                    uint32_t format = AUDIO_FORMAT_DEFAULT,
+                                    audio_format_t format = AUDIO_FORMAT_DEFAULT,
                                     uint32_t channels = 0,
                                     audio_in_acoustics_t acoustics =
                                             (audio_in_acoustics_t)0,
@@ -254,7 +253,7 @@
         Vector< sp<AudioEffect> >mEffects;
     };
 
-    static const char *kInputSourceNames[AUDIO_SOURCE_CNT -1];
+    static const char * const kInputSourceNames[AUDIO_SOURCE_CNT -1];
 
     void setPreProcessorEnabled(InputDesc *inputDesc, bool enabled);
     status_t loadPreProcessorConfig(const char *path);
diff --git a/services/camera/libcameraservice/CameraHardwareInterface.h b/services/camera/libcameraservice/CameraHardwareInterface.h
index 34087b5..2ac69f7 100644
--- a/services/camera/libcameraservice/CameraHardwareInterface.h
+++ b/services/camera/libcameraservice/CameraHardwareInterface.h
@@ -635,6 +635,12 @@
         return native_window_set_crop(a, &crop);
     }
 
+    static int __set_timestamp(struct preview_stream_ops *w,
+                               int64_t timestamp) {
+        ANativeWindow *a = anw(w);
+        return native_window_set_buffers_timestamp(a, timestamp);
+    }
+
     static int __set_usage(struct preview_stream_ops* w, int usage)
     {
         ANativeWindow *a = anw(w);
@@ -664,6 +670,7 @@
         mHalPreviewWindow.nw.set_buffer_count = __set_buffer_count;
         mHalPreviewWindow.nw.set_buffers_geometry = __set_buffers_geometry;
         mHalPreviewWindow.nw.set_crop = __set_crop;
+        mHalPreviewWindow.nw.set_timestamp = __set_timestamp;
         mHalPreviewWindow.nw.set_usage = __set_usage;
         mHalPreviewWindow.nw.set_swap_interval = __set_swap_interval;
 
diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp
index 68bbb570..1f8cf63 100644
--- a/services/input/EventHub.cpp
+++ b/services/input/EventHub.cpp
@@ -156,8 +156,6 @@
         mPendingEventCount(0), mPendingEventIndex(0), mPendingINotify(false) {
     acquire_wake_lock(PARTIAL_WAKE_LOCK, WAKE_LOCK_ID);
 
-    mNumCpus = sysconf(_SC_NPROCESSORS_ONLN);
-
     mEpollFd = epoll_create(EPOLL_SIZE_HINT);
     LOG_ALWAYS_FATAL_IF(mEpollFd < 0, "Could not create epoll instance.  errno=%d", errno);
 
@@ -648,8 +646,9 @@
                         sizeof(struct input_event) * capacity);
                 if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
                     // Device was removed before INotify noticed.
-                    ALOGW("could not get event, removed? (fd: %d size: %d bufferSize: %d capacity: %d errno: %d)\n",
-                         device->fd, readSize, bufferSize, capacity, errno);
+                    ALOGW("could not get event, removed? (fd: %d size: %d bufferSize: %d "
+                            "capacity: %d errno: %d)\n",
+                            device->fd, readSize, bufferSize, capacity, errno);
                     deviceChanged = true;
                     closeDeviceLocked(device);
                 } else if (readSize < 0) {
@@ -774,19 +773,6 @@
         } else {
             // Some events occurred.
             mPendingEventCount = size_t(pollResult);
-
-            // On an SMP system, it is possible for the framework to read input events
-            // faster than the kernel input device driver can produce a complete packet.
-            // Because poll() wakes up as soon as the first input event becomes available,
-            // the framework will often end up reading one event at a time until the
-            // packet is complete.  Instead of one call to read() returning 71 events,
-            // it could take 71 calls to read() each returning 1 event.
-            //
-            // Sleep for a short period of time after waking up from the poll() to give
-            // the kernel time to finish writing the entire packet of input events.
-            if (mNumCpus > 1) {
-                usleep(250);
-            }
         }
     }
 
diff --git a/services/input/EventHub.h b/services/input/EventHub.h
index 9d8252e..8a2afd3 100644
--- a/services/input/EventHub.h
+++ b/services/input/EventHub.h
@@ -367,9 +367,6 @@
     size_t mPendingEventCount;
     size_t mPendingEventIndex;
     bool mPendingINotify;
-
-    // Set to the number of CPUs.
-    int32_t mNumCpus;
 };
 
 }; // namespace android
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java
index 4d5e0a6..31515e1 100644
--- a/services/java/com/android/server/BackupManagerService.java
+++ b/services/java/com/android/server/BackupManagerService.java
@@ -140,6 +140,8 @@
     static final int BACKUP_FILE_VERSION = 1;
     static final boolean COMPRESS_FULL_BACKUPS = true; // should be true in production
 
+    static final String SHARED_BACKUP_AGENT_PACKAGE = "com.android.sharedstoragebackup";
+
     // How often we perform a backup pass.  Privileged external callers can
     // trigger an immediate pass.
     private static final long BACKUP_INTERVAL = AlarmManager.INTERVAL_HOUR;
@@ -235,6 +237,10 @@
     volatile long mLastBackupPass;
     volatile long mNextBackupPass;
 
+    // For debugging, we maintain a progress trace of operations during backup
+    static final boolean DEBUG_BACKUP_TRACE = true;
+    final List<String> mBackupTrace = new ArrayList<String>();
+
     // A similar synchronization mechanism around clearing apps' data for restore
     final Object mClearDataLock = new Object();
     volatile boolean mClearingData;
@@ -652,6 +658,23 @@
         }
     }
 
+    // ----- Debug-only backup operation trace -----
+    void addBackupTrace(String s) {
+        if (DEBUG_BACKUP_TRACE) {
+            synchronized (mBackupTrace) {
+                mBackupTrace.add(s);
+            }
+        }
+    }
+
+    void clearBackupTrace() {
+        if (DEBUG_BACKUP_TRACE) {
+            synchronized (mBackupTrace) {
+                mBackupTrace.clear();
+            }
+        }
+    }
+
     // ----- Main service implementation -----
 
     public BackupManagerService(Context context) {
@@ -1612,6 +1635,7 @@
                             mAgentConnectLock.wait(5000);
                         } catch (InterruptedException e) {
                             // just bail
+                            if (DEBUG) Slog.w(TAG, "Interrupted: " + e);
                             return null;
                         }
                     }
@@ -1621,6 +1645,7 @@
                         Slog.w(TAG, "Timeout waiting for agent " + app);
                         return null;
                     }
+                    if (DEBUG) Slog.i(TAG, "got agent " + mConnectedAgent);
                     agent = mConnectedAgent;
                 }
             } catch (RemoteException e) {
@@ -1814,6 +1839,8 @@
 
             mCurrentState = BackupState.INITIAL;
             mFinished = false;
+
+            addBackupTrace("STATE => INITIAL");
         }
 
         // Main entry point: perform one chunk of work, updating the state as appropriate
@@ -1842,11 +1869,25 @@
         // We're starting a backup pass.  Initialize the transport and send
         // the PM metadata blob if we haven't already.
         void beginBackup() {
+            if (DEBUG_BACKUP_TRACE) {
+                clearBackupTrace();
+                StringBuilder b = new StringBuilder(256);
+                b.append("beginBackup: [");
+                for (BackupRequest req : mOriginalQueue) {
+                    b.append(' ');
+                    b.append(req.packageName);
+                }
+                b.append(" ]");
+                addBackupTrace(b.toString());
+            }
+
             mStatus = BackupConstants.TRANSPORT_OK;
 
             // Sanity check: if the queue is empty we have no work to do.
             if (mOriginalQueue.isEmpty()) {
                 Slog.w(TAG, "Backup begun with an empty queue - nothing to do.");
+                addBackupTrace("queue empty at begin");
+                executeNextState(BackupState.FINAL);
                 return;
             }
 
@@ -1859,13 +1900,17 @@
 
             File pmState = new File(mStateDir, PACKAGE_MANAGER_SENTINEL);
             try {
-                EventLog.writeEvent(EventLogTags.BACKUP_START, mTransport.transportDirName());
+                final String transportName = mTransport.transportDirName();
+                EventLog.writeEvent(EventLogTags.BACKUP_START, transportName);
 
                 // If we haven't stored package manager metadata yet, we must init the transport.
                 if (mStatus == BackupConstants.TRANSPORT_OK && pmState.length() <= 0) {
                     Slog.i(TAG, "Initializing (wiping) backup state and transport storage");
+                    addBackupTrace("initializing transport " + transportName);
                     resetBackupState(mStateDir);  // Just to make sure.
                     mStatus = mTransport.initializeDevice();
+
+                    addBackupTrace("transport.initializeDevice() == " + mStatus);
                     if (mStatus == BackupConstants.TRANSPORT_OK) {
                         EventLog.writeEvent(EventLogTags.BACKUP_INITIALIZE);
                     } else {
@@ -1884,6 +1929,7 @@
                             mPackageManager, allAgentPackages());
                     mStatus = invokeAgentForBackup(PACKAGE_MANAGER_SENTINEL,
                             IBackupAgent.Stub.asInterface(pmAgent.onBind()), mTransport);
+                    addBackupTrace("PMBA invoke: " + mStatus);
                 }
 
                 if (mStatus == BackupConstants.TRANSPORT_NOT_INITIALIZED) {
@@ -1894,11 +1940,13 @@
                 }
             } catch (Exception e) {
                 Slog.e(TAG, "Error in backup thread", e);
+                addBackupTrace("Exception in backup thread: " + e);
                 mStatus = BackupConstants.TRANSPORT_ERROR;
             } finally {
                 // If we've succeeded so far, invokeAgentForBackup() will have run the PM
                 // metadata and its completion/timeout callback will continue the state
                 // machine chain.  If it failed that won't happen; we handle that now.
+                addBackupTrace("exiting prelim: " + mStatus);
                 if (mStatus != BackupConstants.TRANSPORT_OK) {
                     // if things went wrong at this point, we need to
                     // restage everything and try again later.
@@ -1912,11 +1960,12 @@
         // if that was warranted.  Now we process the single next thing in the queue.
         void invokeNextAgent() {
             mStatus = BackupConstants.TRANSPORT_OK;
+            addBackupTrace("invoke q=" + mQueue.size());
 
             // Sanity check that we have work to do.  If not, skip to the end where
             // we reestablish the wakelock invariants etc.
             if (mQueue.isEmpty()) {
-                Slog.e(TAG, "Running queue but it's empty!");
+                if (DEBUG) Slog.i(TAG, "queue now empty");
                 executeNextState(BackupState.FINAL);
                 return;
             }
@@ -1926,6 +1975,7 @@
             mQueue.remove(0);
 
             Slog.d(TAG, "starting agent for backup of " + request);
+            addBackupTrace("launch agent for " + request.packageName);
 
             // Verify that the requested app exists; it might be something that
             // requested a backup but was then uninstalled.  The request was
@@ -1941,6 +1991,7 @@
                     mWakelock.setWorkSource(new WorkSource(mCurrentPackage.applicationInfo.uid));
                     agent = bindToAgentSynchronous(mCurrentPackage.applicationInfo,
                             IApplicationThread.BACKUP_MODE_INCREMENTAL);
+                    addBackupTrace("agent bound; a? = " + (agent != null));
                     if (agent != null) {
                         mStatus = invokeAgentForBackup(request.packageName, agent, mTransport);
                         // at this point we'll either get a completion callback from the
@@ -1954,14 +2005,17 @@
                     // Try for the next one.
                     Slog.d(TAG, "error in bind/backup", ex);
                     mStatus = BackupConstants.AGENT_ERROR;
+                            addBackupTrace("agent SE");
                 }
             } catch (NameNotFoundException e) {
                 Slog.d(TAG, "Package does not exist; skipping");
+                addBackupTrace("no such package");
+                mStatus = BackupConstants.AGENT_UNKNOWN;
             } finally {
                 mWakelock.setWorkSource(null);
 
                 // If there was an agent error, no timeout/completion handling will occur.
-                // That means we need to deal with the next state ourselves.
+                // That means we need to direct to the next state ourselves.
                 if (mStatus != BackupConstants.TRANSPORT_OK) {
                     BackupState nextState = BackupState.RUNNING_QUEUE;
 
@@ -1973,18 +2027,26 @@
                         dataChangedImpl(request.packageName);
                         mStatus = BackupConstants.TRANSPORT_OK;
                         if (mQueue.isEmpty()) nextState = BackupState.FINAL;
-                    } else if (mStatus != BackupConstants.TRANSPORT_OK) {
+                    } else if (mStatus == BackupConstants.AGENT_UNKNOWN) {
+                        // Failed lookup of the app, so we couldn't bring up an agent, but
+                        // we're otherwise fine.  Just drop it and go on to the next as usual.
+                        mStatus = BackupConstants.TRANSPORT_OK;
+                    } else {
                         // Transport-level failure means we reenqueue everything
                         revertAndEndBackup();
                         nextState = BackupState.FINAL;
                     }
 
                     executeNextState(nextState);
+                } else {
+                    addBackupTrace("expecting completion/timeout callback");
                 }
             }
         }
 
         void finalizeBackup() {
+            addBackupTrace("finishing");
+
             // Either backup was successful, in which case we of course do not need
             // this pass's journal any more; or it failed, in which case we just
             // re-enqueued all of these packages in the current active journal.
@@ -1997,6 +2059,7 @@
             // done a backup, we can now record what the current backup dataset token
             // is.
             if ((mCurrentToken == 0) && (mStatus == BackupConstants.TRANSPORT_OK)) {
+                addBackupTrace("success; recording token");
                 try {
                     mCurrentToken = mTransport.getCurrentRestoreSet();
                 } catch (RemoteException e) {} // can't happen
@@ -2012,11 +2075,13 @@
                     // Make sure we back up everything and perform the one-time init
                     clearMetadata();
                     if (DEBUG) Slog.d(TAG, "Server requires init; rerunning");
+                    addBackupTrace("init required; rerunning");
                     backupNow();
                 }
             }
 
             // Only once we're entirely finished do we release the wakelock
+            clearBackupTrace();
             Slog.i(TAG, "Backup pass finished.");
             mWakelock.release();
         }
@@ -2031,7 +2096,8 @@
         // handler in case it doesn't get back to us.
         int invokeAgentForBackup(String packageName, IBackupAgent agent,
                 IBackupTransport transport) {
-            if (DEBUG) Slog.d(TAG, "processOneBackup doBackup() on " + packageName);
+            if (DEBUG) Slog.d(TAG, "invokeAgentForBackup on " + packageName);
+            addBackupTrace("invoking " + packageName);
 
             mSavedStateName = new File(mStateDir, packageName);
             mBackupDataName = new File(mDataDir, packageName + ".data");
@@ -2071,10 +2137,13 @@
                         ParcelFileDescriptor.MODE_TRUNCATE);
 
                 // Initiate the target's backup pass
+                addBackupTrace("setting timeout");
                 prepareOperationTimeout(token, TIMEOUT_BACKUP_INTERVAL, this);
+                addBackupTrace("calling agent doBackup()");
                 agent.doBackup(mSavedState, mBackupData, mNewState, token, mBackupManagerBinder);
             } catch (Exception e) {
                 Slog.e(TAG, "Error invoking for backup on " + packageName);
+                addBackupTrace("exception: " + e);
                 EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, packageName,
                         e.toString());
                 agentErrorCleanup();
@@ -2085,6 +2154,7 @@
             // either be a callback from the agent, at which point we'll process its data
             // for transport, or a timeout.  Either way the next phase will happen in
             // response to the TimeoutHandler interface callbacks.
+            addBackupTrace("invoke success");
             return BackupConstants.TRANSPORT_OK;
         }
 
@@ -2096,6 +2166,7 @@
                     + mCurrentPackage.packageName);
             mBackupHandler.removeMessages(MSG_TIMEOUT);
             clearAgentState();
+            addBackupTrace("operation complete");
 
             ParcelFileDescriptor backupData = null;
             mStatus = BackupConstants.TRANSPORT_OK;
@@ -2105,6 +2176,7 @@
                     if (mStatus == BackupConstants.TRANSPORT_OK) {
                         backupData = ParcelFileDescriptor.open(mBackupDataName,
                                 ParcelFileDescriptor.MODE_READ_ONLY);
+                        addBackupTrace("sending data to transport");
                         mStatus = mTransport.performBackup(mCurrentPackage, backupData);
                     }
 
@@ -2113,11 +2185,15 @@
                     // hold off on finishBackup() until the end, which implies holding off on
                     // renaming *all* the output state files (see below) until that happens.
 
+                    addBackupTrace("data delivered: " + mStatus);
                     if (mStatus == BackupConstants.TRANSPORT_OK) {
+                        addBackupTrace("finishing op on transport");
                         mStatus = mTransport.finishBackup();
+                        addBackupTrace("finished: " + mStatus);
                     }
                 } else {
                     if (DEBUG) Slog.i(TAG, "no backup data written; not calling transport");
+                    addBackupTrace("no data to send");
                 }
 
                 // After successful transport, delete the now-stale data
@@ -2165,12 +2241,14 @@
             Slog.e(TAG, "Timeout backing up " + mCurrentPackage.packageName);
             EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, mCurrentPackage.packageName,
                     "timeout");
+            addBackupTrace("timeout of " + mCurrentPackage.packageName);
             agentErrorCleanup();
             dataChangedImpl(mCurrentPackage.packageName);
         }
 
         void revertAndEndBackup() {
             if (MORE_DEBUG) Slog.i(TAG, "Reverting backup queue - restaging everything");
+            addBackupTrace("transport error; reverting");
             for (BackupRequest request : mOriginalQueue) {
                 dataChangedImpl(request.packageName);
             }
@@ -2199,6 +2277,7 @@
 
             // If this was a pseudopackage there's no associated Activity Manager state
             if (mCurrentPackage.applicationInfo != null) {
+                addBackupTrace("unbinding " + mCurrentPackage.packageName);
                 try {  // unbind even on timeout, just in case
                     mActivityManager.unbindBackupAgent(mCurrentPackage.applicationInfo);
                 } catch (RemoteException e) {}
@@ -2206,6 +2285,7 @@
         }
 
         void restartBackupAlarm() {
+            addBackupTrace("setting backup trigger");
             synchronized (mQueueLock) {
                 try {
                     startBackupAlarmsLocked(mTransport.requestBackupTime());
@@ -2216,6 +2296,7 @@
         void executeNextState(BackupState nextState) {
             if (MORE_DEBUG) Slog.i(TAG, " => executing next step on "
                     + this + " nextState=" + nextState);
+            addBackupTrace("executeNextState => " + nextState);
             mCurrentState = nextState;
             Message msg = mBackupHandler.obtainMessage(MSG_BACKUP_RESTORE_STEP, this);
             mBackupHandler.sendMessage(msg);
@@ -2246,14 +2327,16 @@
             ParcelFileDescriptor mPipe;
             int mToken;
             boolean mSendApk;
+            boolean mWriteManifest;
 
             FullBackupRunner(PackageInfo pack, IBackupAgent agent, ParcelFileDescriptor pipe,
-                    int token, boolean sendApk)  throws IOException {
+                    int token, boolean sendApk, boolean writeManifest)  throws IOException {
                 mPackage = pack;
                 mAgent = agent;
                 mPipe = ParcelFileDescriptor.dup(pipe.getFileDescriptor());
                 mToken = token;
                 mSendApk = sendApk;
+                mWriteManifest = writeManifest;
             }
 
             @Override
@@ -2262,12 +2345,14 @@
                     BackupDataOutput output = new BackupDataOutput(
                             mPipe.getFileDescriptor());
 
-                    if (MORE_DEBUG) Slog.d(TAG, "Writing manifest for " + mPackage.packageName);
-                    writeAppManifest(mPackage, mManifestFile, mSendApk);
-                    FullBackup.backupToTar(mPackage.packageName, null, null,
-                            mFilesDir.getAbsolutePath(),
-                            mManifestFile.getAbsolutePath(),
-                            output);
+                    if (mWriteManifest) {
+                        if (MORE_DEBUG) Slog.d(TAG, "Writing manifest for " + mPackage.packageName);
+                        writeAppManifest(mPackage, mManifestFile, mSendApk);
+                        FullBackup.backupToTar(mPackage.packageName, null, null,
+                                mFilesDir.getAbsolutePath(),
+                                mManifestFile.getAbsolutePath(),
+                                output);
+                    }
 
                     if (mSendApk) {
                         writeApkToBackup(mPackage, output);
@@ -2354,10 +2439,13 @@
                 }
             }
 
-            // Cull any packages that have indicated that backups are not permitted.
+            // Cull any packages that have indicated that backups are not permitted, as well
+            // as any explicit mention of the 'special' shared-storage agent package (we
+            // handle that one at the end).
             for (int i = 0; i < packagesToBackup.size(); ) {
                 PackageInfo pkg = packagesToBackup.get(i);
-                if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) {
+                if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_ALLOW_BACKUP) == 0
+                        || pkg.packageName.equals(SHARED_BACKUP_AGENT_PACKAGE)) {
                     packagesToBackup.remove(i);
                 } else {
                     i++;
@@ -2437,6 +2525,16 @@
                     return;
                 }
 
+                // Shared storage if requested
+                if (mIncludeShared) {
+                    try {
+                        pkg = mPackageManager.getPackageInfo(SHARED_BACKUP_AGENT_PACKAGE, 0);
+                        packagesToBackup.add(pkg);
+                    } catch (NameNotFoundException e) {
+                        Slog.e(TAG, "Unable to find shared-storage backup handler");
+                    }
+                }
+
                 // Now back up the app data via the agent mechanism
                 int N = packagesToBackup.size();
                 for (int i = 0; i < N; i++) {
@@ -2444,11 +2542,6 @@
                     backupOnePackage(pkg, out);
                 }
 
-                // Shared storage if requested
-                if (mIncludeShared) {
-                    backupSharedStorage();
-                }
-
                 // Done!
                 finalizeBackup(out);
             } catch (RemoteException e) {
@@ -2554,19 +2647,21 @@
             if (agent != null) {
                 ParcelFileDescriptor[] pipes = null;
                 try {
-                     pipes = ParcelFileDescriptor.createPipe();
+                    pipes = ParcelFileDescriptor.createPipe();
 
                     ApplicationInfo app = pkg.applicationInfo;
+                    final boolean isSharedStorage = pkg.packageName.equals(SHARED_BACKUP_AGENT_PACKAGE);
                     final boolean sendApk = mIncludeApks
+                            && !isSharedStorage
                             && ((app.flags & ApplicationInfo.FLAG_FORWARD_LOCK) == 0)
                             && ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0 ||
                                 (app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
 
-                    sendOnBackupPackage(pkg.packageName);
+                    sendOnBackupPackage(isSharedStorage ? "Shared storage" : pkg.packageName);
 
                     final int token = generateToken();
                     FullBackupRunner runner = new FullBackupRunner(pkg, agent, pipes[1],
-                            token, sendApk);
+                            token, sendApk, !isSharedStorage);
                     pipes[1].close();   // the runner has dup'd it
                     pipes[1] = null;
                     Thread t = new Thread(runner);
@@ -2641,33 +2736,6 @@
             }
         }
 
-        private void backupSharedStorage() throws RemoteException {
-            PackageInfo pkg = null;
-            try {
-                pkg = mPackageManager.getPackageInfo("com.android.sharedstoragebackup", 0);
-                IBackupAgent agent = bindToAgentSynchronous(pkg.applicationInfo,
-                        IApplicationThread.BACKUP_MODE_FULL);
-                if (agent != null) {
-                    sendOnBackupPackage("Shared storage");
-
-                    final int token = generateToken();
-                    prepareOperationTimeout(token, TIMEOUT_SHARED_BACKUP_INTERVAL, null);
-                    agent.doFullBackup(mOutputFile, token, mBackupManagerBinder);
-                    if (!waitUntilOperationComplete(token)) {
-                        Slog.e(TAG, "Full backup failed on shared storage");
-                    } else {
-                        if (DEBUG) Slog.d(TAG, "Full shared storage backup success");
-                    }
-                } else {
-                    Slog.e(TAG, "Could not bind to shared storage backup agent");
-                }
-            } catch (NameNotFoundException e) {
-                Slog.e(TAG, "Shared storage backup package not found");
-            } finally {
-                tearDown(pkg);
-            }
-        }
-
         private void finalizeBackup(OutputStream out) {
             try {
                 // A standard 'tar' EOF sequence: two 512-byte blocks of all zeroes.
@@ -2893,7 +2961,7 @@
 
             // Are we able to restore shared-storage data?
             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
-                mPackagePolicies.put("com.android.sharedstoragebackup", RestorePolicy.ACCEPT);
+                mPackagePolicies.put(SHARED_BACKUP_AGENT_PACKAGE, RestorePolicy.ACCEPT);
             }
 
             FileInputStream rawInStream = null;
@@ -3771,7 +3839,7 @@
                             info.path, 0, FullBackup.SHARED_PREFIX.length())) {
                         // File in shared storage.  !!! TODO: implement this.
                         info.path = info.path.substring(FullBackup.SHARED_PREFIX.length());
-                        info.packageName = "com.android.sharedstoragebackup";
+                        info.packageName = SHARED_BACKUP_AGENT_PACKAGE;
                         info.domain = FullBackup.SHARED_STORAGE_TOKEN;
                         if (DEBUG) Slog.i(TAG, "File in shared storage: " + info.path);
                     } else if (FullBackup.APPS_PREFIX.regionMatches(0,
@@ -4715,6 +4783,8 @@
                     // one already there, then overwrite it, but no harm done.
                     BackupRequest req = new BackupRequest(packageName);
                     if (mPendingBackups.put(app.packageName, req) == null) {
+                        if (DEBUG) Slog.d(TAG, "Now staging backup of " + packageName);
+
                         // Journal this request in case of crash.  The put()
                         // operation returned null when this package was not already
                         // in the set; we want to avoid touching the disk redundantly.
@@ -5736,6 +5806,17 @@
                 pw.println("    " + s);
             }
 
+            if (DEBUG_BACKUP_TRACE) {
+                synchronized (mBackupTrace) {
+                    if (!mBackupTrace.isEmpty()) {
+                        pw.println("Most recent backup trace:");
+                        for (String s : mBackupTrace) {
+                            pw.println("   " + s);
+                        }
+                    }
+                }
+            }
+
             int N = mBackupParticipants.size();
             pw.println("Participants:");
             for (int i=0; i<N; i++) {
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 97fb0b0..b7dc4a2 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1031,9 +1031,14 @@
                 if ((ni.isConnectedOrConnecting() == true) &&
                         !network.isTeardownRequested()) {
                     if (ni.isConnected() == true) {
-                        // add the pid-specific dns
-                        handleDnsConfigurationChange(usedNetworkType);
-                        if (VDBG) log("special network already active");
+                        final long token = Binder.clearCallingIdentity();
+                        try {
+                            // add the pid-specific dns
+                            handleDnsConfigurationChange(usedNetworkType);
+                            if (VDBG) log("special network already active");
+                        } finally {
+                            Binder.restoreCallingIdentity(token);
+                        }
                         return Phone.APN_ALREADY_ACTIVE;
                     }
                     if (VDBG) log("special network already connecting");
@@ -1221,6 +1226,7 @@
         }
 
         if (!ConnectivityManager.isNetworkTypeValid(networkType)) {
+            if (DBG) log("requestRouteToHostAddress on invalid network: " + networkType);
             return false;
         }
         NetworkStateTracker tracker = mNetTrackers[networkType];
@@ -1233,11 +1239,16 @@
             }
             return false;
         }
+        final long token = Binder.clearCallingIdentity();
         try {
             InetAddress addr = InetAddress.getByAddress(hostAddress);
             LinkProperties lp = tracker.getLinkProperties();
             return addRouteToAddress(lp, addr);
-        } catch (UnknownHostException e) {}
+        } catch (UnknownHostException e) {
+            if (DBG) log("requestRouteToHostAddress got " + e.toString());
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
         return false;
     }
 
@@ -1277,7 +1288,10 @@
 
     private boolean modifyRoute(String ifaceName, LinkProperties lp, RouteInfo r, int cycleCount,
             boolean doAdd, boolean toDefaultTable) {
-        if ((ifaceName == null) || (lp == null) || (r == null)) return false;
+        if ((ifaceName == null) || (lp == null) || (r == null)) {
+            if (DBG) log("modifyRoute got unexpected null: " + ifaceName + ", " + lp + ", " + r);
+            return false;
+        }
 
         if (cycleCount > MAX_HOSTROUTE_CYCLE_COUNT) {
             loge("Error modifying route - too much recursion");
@@ -1309,7 +1323,7 @@
                 }
             } catch (Exception e) {
                 // never crash - catch them all
-                if (VDBG) loge("Exception trying to add a route: " + e);
+                if (DBG) loge("Exception trying to add a route: " + e);
                 return false;
             }
         } else {
@@ -1323,7 +1337,7 @@
                         mNetd.removeRoute(ifaceName, r);
                     } catch (Exception e) {
                         // never crash - catch them all
-                        if (VDBG) loge("Exception trying to remove a route: " + e);
+                        if (DBG) loge("Exception trying to remove a route: " + e);
                         return false;
                     }
                 } else {
@@ -1335,7 +1349,7 @@
                     mNetd.removeSecondaryRoute(ifaceName, r);
                 } catch (Exception e) {
                     // never crash - catch them all
-                    if (VDBG) loge("Exception trying to remove a route: " + e);
+                    if (DBG) loge("Exception trying to remove a route: " + e);
                     return false;
                 }
             }
@@ -2004,7 +2018,7 @@
                         mNetd.removeRoute(ifaceName, r);
                     } catch (Exception e) {
                         // never crash - catch them all
-                        if (VDBG) loge("Exception trying to remove a route: " + e);
+                        if (DBG) loge("Exception trying to remove a route: " + e);
                     }
                 }
             }
@@ -2218,7 +2232,7 @@
                 mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses));
                 mNetd.setDefaultInterfaceForDns(iface);
             } catch (Exception e) {
-                if (VDBG) loge("exception setting default dns interface: " + e);
+                if (DBG) loge("exception setting default dns interface: " + e);
             }
         }
         if (!domains.equals(SystemProperties.get("net.dns.search"))) {
@@ -2248,7 +2262,7 @@
                     mNetd.setDnsServersForInterface(p.getInterfaceName(),
                             NetworkUtils.makeStrings(dnses));
                 } catch (Exception e) {
-                    if (VDBG) loge("exception setting dns servers: " + e);
+                    if (DBG) loge("exception setting dns servers: " + e);
                 }
                 // set per-pid dns for attached secondary nets
                 List pids = mNetRequestersPids[netType];
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index e8ca3ce..d8e3d59 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -60,6 +60,7 @@
 import android.util.Printer;
 import android.util.Slog;
 import android.util.Xml;
+import android.view.IWindowManager;
 import android.view.WindowManagerPolicy;
 
 import java.io.File;
@@ -96,6 +97,7 @@
     final PowerManager.WakeLock mWakeLock;
 
     IPowerManager mIPowerManager;
+    IWindowManager mIWindowManager;
 
     int mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
     int mActivePasswordLength = 0;
@@ -506,6 +508,14 @@
         return mIPowerManager;
     }
 
+    private IWindowManager getWindowManager() {
+        if (mIWindowManager == null) {
+            IBinder b = ServiceManager.getService(Context.WINDOW_SERVICE);
+            mIWindowManager = IWindowManager.Stub.asInterface(b);
+        }
+        return mIWindowManager;
+    }
+
     ActiveAdmin getActiveAdminUncheckedLocked(ComponentName who) {
         ActiveAdmin admin = mAdminMap.get(who);
         if (admin != null
@@ -1649,8 +1659,11 @@
                     DeviceAdminInfo.USES_POLICY_FORCE_LOCK);
             long ident = Binder.clearCallingIdentity();
             try {
+                // Power off the display
                 mIPowerManager.goToSleepWithReason(SystemClock.uptimeMillis(),
                         WindowManagerPolicy.OFF_BECAUSE_OF_ADMIN);
+                // Ensure the device is locked
+                getWindowManager().lockNow();
             } catch (RemoteException e) {
             } finally {
                 Binder.restoreCallingIdentity(ident);
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index a32e9f5..366160b 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -1169,7 +1169,7 @@
          * amount of containers we'd ever expect to have. This keeps an
          * "asec list" from blocking a thread repeatedly.
          */
-        mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG);
+        mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG, 25);
         mReady = false;
         Thread thread = new Thread(mConnector, VOLD_TAG);
         thread.start();
@@ -2429,6 +2429,10 @@
                 pw.println(v.toString());
             }
         }
+
+        pw.println();
+        pw.println("  mConnection:");
+        mConnector.dump(fd, pw, args);
     }
 
     /** {@inheritDoc} */
diff --git a/services/java/com/android/server/NativeDaemonConnector.java b/services/java/com/android/server/NativeDaemonConnector.java
index cc2bcd9..f475dd6 100644
--- a/services/java/com/android/server/NativeDaemonConnector.java
+++ b/services/java/com/android/server/NativeDaemonConnector.java
@@ -22,14 +22,17 @@
 import android.os.HandlerThread;
 import android.os.Message;
 import android.os.SystemClock;
+import android.util.LocalLog;
 import android.util.Slog;
 
 import com.google.android.collect.Lists;
 
+import java.nio.charset.Charsets;
+import java.io.FileDescriptor;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.nio.charset.Charsets;
+import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -45,6 +48,7 @@
 
     private String mSocket;
     private OutputStream mOutputStream;
+    private LocalLog mLocalLog;
 
     private final BlockingQueue<NativeDaemonEvent> mResponseQueue;
 
@@ -57,11 +61,12 @@
     private final int BUFFER_SIZE = 4096;
 
     NativeDaemonConnector(INativeDaemonConnectorCallbacks callbacks, String socket,
-            int responseQueueSize, String logTag) {
+            int responseQueueSize, String logTag, int maxLogSize) {
         mCallbacks = callbacks;
         mSocket = socket;
         mResponseQueue = new LinkedBlockingQueue<NativeDaemonEvent>(responseQueueSize);
         TAG = logTag != null ? logTag : "NativeDaemonConnector";
+        mLocalLog = new LocalLog(maxLogSize);
     }
 
     @Override
@@ -125,7 +130,7 @@
                     if (buffer[i] == 0) {
                         final String rawEvent = new String(
                                 buffer, start, i - start, Charsets.UTF_8);
-                        if (LOGD) Slog.d(TAG, "RCV <- " + rawEvent);
+                        log("RCV <- {" + rawEvent + "}");
 
                         try {
                             final NativeDaemonEvent event = NativeDaemonEvent.parseRawEvent(
@@ -208,7 +213,7 @@
         }
 
         final String unterminated = builder.toString();
-        if (LOGD) Slog.d(TAG, "SND -> " + unterminated);
+        log("SND -> {" + unterminated + "}");
 
         builder.append('\0');
 
@@ -432,4 +437,13 @@
     public void monitor() {
         synchronized (mDaemonLock) { }
     }
+
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        mLocalLog.dump(fd, pw, args);
+    }
+
+    private void log(String logstring) {
+        if (LOGD) Slog.d(TAG, logstring);
+        mLocalLog.log(logstring);
+    }
 }
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java
index c1d8a13..7bb7938 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/java/com/android/server/NetworkManagementService.java
@@ -163,7 +163,7 @@
         }
 
         mConnector = new NativeDaemonConnector(
-                new NetdCallbackReceiver(), "netd", 10, NETD_TAG);
+                new NetdCallbackReceiver(), "netd", 10, NETD_TAG, 50);
         mThread = new Thread(mConnector, NETD_TAG);
 
         // Add ourself to the Watchdog monitors.
@@ -1265,6 +1265,10 @@
     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         mContext.enforceCallingOrSelfPermission(DUMP, TAG);
 
+        pw.println("NetworkManagementService NativeDaemonConnector Log:");
+        mConnector.dump(fd, pw, args);
+        pw.println();
+
         pw.print("Bandwidth control enabled: "); pw.println(mBandwidthControlEnabled);
 
         synchronized (mQuotaLock) {
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 774495a..bb0ac3e 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -51,7 +51,6 @@
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.WorkSource;
-import android.provider.Settings.SettingNotFoundException;
 import android.provider.Settings;
 import android.util.EventLog;
 import android.util.Log;
@@ -60,6 +59,7 @@
 import static android.provider.Settings.System.DIM_SCREEN;
 import static android.provider.Settings.System.SCREEN_BRIGHTNESS;
 import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
+import static android.provider.Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ;
 import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
 import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
 import static android.provider.Settings.System.STAY_ON_WHILE_PLUGGED_IN;
@@ -106,6 +106,14 @@
     // light sensor events rate in microseconds
     private static final int LIGHT_SENSOR_RATE = 1000000;
 
+    // Expansion of range of light values when applying scale from light
+    // sensor brightness setting, in the [0..255] brightness range.
+    private static final int LIGHT_SENSOR_RANGE_EXPANSION = 20;
+
+    // Scaling factor of the light sensor brightness setting when applying
+    // it to the final brightness.
+    private static final int LIGHT_SENSOR_OFFSET_SCALE = 8;
+
     // For debouncing the proximity sensor in milliseconds
     private static final int PROXIMITY_SENSOR_DELAY = 1000;
 
@@ -118,6 +126,9 @@
     // Default timeout for screen off, if not found in settings database = 15 seconds.
     private static final int DEFAULT_SCREEN_OFF_TIMEOUT = 15000;
 
+    // Screen brightness should always have a value, but just in case...
+    private static final int DEFAULT_SCREEN_BRIGHTNESS = 192;
+
     // flags for setPowerState
     private static final int SCREEN_ON_BIT          = 0x00000001;
     private static final int SCREEN_BRIGHT_BIT      = 0x00000002;
@@ -150,6 +161,8 @@
     static final int ANIM_STEPS = 60/4;
     // Slower animation for autobrightness changes
     static final int AUTOBRIGHTNESS_ANIM_STEPS = 60;
+    // Number of steps when performing a more immediate brightness change.
+    static final int IMMEDIATE_ANIM_STEPS = 4;
 
     // These magic numbers are the initial state of the LEDs at boot.  Ideally
     // we should read them from the driver, but our current hardware returns 0
@@ -227,6 +240,7 @@
     private boolean mLightSensorPendingDecrease = false;
     private boolean mLightSensorPendingIncrease = false;
     private float mLightSensorPendingValue = -1;
+    private float mLightSensorAdjustSetting = 0;
     private int mLightSensorScreenBrightness = -1;
     private int mLightSensorButtonBrightness = -1;
     private int mLightSensorKeyboardBrightness = -1;
@@ -240,6 +254,7 @@
     // mLastScreenOnTime is the time the screen was last turned on
     private long mLastScreenOnTime;
     private boolean mPreventScreenOn;
+    private int mScreenBrightnessSetting = DEFAULT_SCREEN_BRIGHTNESS;
     private int mScreenBrightnessOverride = -1;
     private int mButtonBrightnessOverride = -1;
     private int mScreenBrightnessDim;
@@ -460,6 +475,9 @@
                 // DIM_SCREEN
                 //mDimScreen = getInt(DIM_SCREEN) != 0;
 
+                mScreenBrightnessSetting = getInt(SCREEN_BRIGHTNESS, DEFAULT_SCREEN_BRIGHTNESS);
+                mLightSensorAdjustSetting = getFloat(SCREEN_AUTO_BRIGHTNESS_ADJ, 0);
+
                 // SCREEN_BRIGHTNESS_MODE, default to manual
                 setScreenBrightnessMode(getInt(SCREEN_BRIGHTNESS_MODE,
                         Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL));
@@ -624,9 +642,12 @@
                         + Settings.System.NAME + "=?) or ("
                         + Settings.System.NAME + "=?) or ("
                         + Settings.System.NAME + "=?) or ("
+                        + Settings.System.NAME + "=?) or ("
+                        + Settings.System.NAME + "=?) or ("
                         + Settings.System.NAME + "=?)",
-                new String[]{STAY_ON_WHILE_PLUGGED_IN, SCREEN_OFF_TIMEOUT, DIM_SCREEN,
-                        SCREEN_BRIGHTNESS_MODE, WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE},
+                new String[]{STAY_ON_WHILE_PLUGGED_IN, SCREEN_OFF_TIMEOUT, DIM_SCREEN, SCREEN_BRIGHTNESS,
+                        SCREEN_BRIGHTNESS_MODE, SCREEN_AUTO_BRIGHTNESS_ADJ,
+                        WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE},
                 null);
         mSettings = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, mHandler);
         SettingsObserver settingsObserver = new SettingsObserver();
@@ -1163,7 +1184,8 @@
             pw.println("  mProximitySensorActive=" + mProximitySensorActive);
             pw.println("  mProximityPendingValue=" + mProximityPendingValue);
             pw.println("  mLastProximityEventTime=" + mLastProximityEventTime);
-            pw.println("  mLightSensorEnabled=" + mLightSensorEnabled);
+            pw.println("  mLightSensorEnabled=" + mLightSensorEnabled
+                    + " mLightSensorAdjustSetting=" + mLightSensorAdjustSetting);
             pw.println("  mLightSensorValue=" + mLightSensorValue
                     + " mLightSensorPendingValue=" + mLightSensorPendingValue);
             pw.println("  mLightSensorPendingDecrease=" + mLightSensorPendingDecrease
@@ -2230,20 +2252,15 @@
     }
 
     private int getPreferredBrightness() {
-        try {
-            if (mScreenBrightnessOverride >= 0) {
-                return mScreenBrightnessOverride;
-            } else if (mLightSensorScreenBrightness >= 0 && mUseSoftwareAutoBrightness
-                    && mAutoBrightessEnabled) {
-                return mLightSensorScreenBrightness;
-            }
-            final int brightness = Settings.System.getInt(mContext.getContentResolver(),
-                                                          SCREEN_BRIGHTNESS);
-             // Don't let applications turn the screen all the way off
-            return Math.max(brightness, mScreenBrightnessDim);
-        } catch (SettingNotFoundException snfe) {
-            return Power.BRIGHTNESS_ON;
+        if (mScreenBrightnessOverride >= 0) {
+            return mScreenBrightnessOverride;
+        } else if (mLightSensorScreenBrightness >= 0 && mUseSoftwareAutoBrightness
+                && mAutoBrightessEnabled) {
+            return mLightSensorScreenBrightness;
         }
+        final int brightness = mScreenBrightnessSetting;
+         // Don't let applications turn the screen all the way off
+        return Math.max(brightness, mScreenBrightnessDim);
     }
 
     private int applyButtonState(int state) {
@@ -2439,7 +2456,34 @@
                     break;
                 }
             }
-            return values[i];
+            // This is the range of brightness values that we can use.
+            final int minval = values[0];
+            final int maxval = values[mAutoBrightnessLevels.length];
+            // This is the range we will be scaling.  We put some padding
+            // at the low and high end to give the adjustment a little better
+            // impact on the actual observed value.
+            final int range = (maxval-minval) + LIGHT_SENSOR_RANGE_EXPANSION;
+            // This is the desired brightness value from 0.0 to 1.0.
+            float valf = ((values[i]-minval+(LIGHT_SENSOR_RANGE_EXPANSION/2))/(float)range);
+            // Apply a scaling to the value based on the adjustment.
+            if (mLightSensorAdjustSetting > 0 && mLightSensorAdjustSetting <= 1) {
+                float adj = (float)Math.sqrt(1.0f-mLightSensorAdjustSetting);
+                if (adj <= .00001) {
+                    valf = 1;
+                } else {
+                    valf /= adj;
+                }
+            } else if (mLightSensorAdjustSetting < 0 && mLightSensorAdjustSetting >= -1) {
+                float adj = (float)Math.sqrt(1.0f+mLightSensorAdjustSetting);
+                valf *= adj;
+            }
+            // Apply an additional offset to the value based on the adjustment.
+            valf += mLightSensorAdjustSetting/LIGHT_SENSOR_OFFSET_SCALE;
+            // Convert the 0.0-1.0 value back to a brightness integer.
+            int val = (int)((valf*range)+minval) - (LIGHT_SENSOR_RANGE_EXPANSION/2);
+            if (val < minval) val = minval;
+            else if (val > maxval) val = maxval;
+            return val;
         } catch (Exception e) {
             // guard against null pointer or index out of bounds errors
             Slog.e(TAG, "getAutoBrightnessValue", e);
@@ -2468,7 +2512,7 @@
                     int value = (int)mLightSensorPendingValue;
                     mLightSensorPendingDecrease = false;
                     mLightSensorPendingIncrease = false;
-                    lightSensorChangedLocked(value);
+                    lightSensorChangedLocked(value, false);
                 }
             }
         }
@@ -2485,12 +2529,12 @@
                 // force lights recalculation
                 int value = (int)mLightSensorValue;
                 mLightSensorValue = -1;
-                lightSensorChangedLocked(value);
+                lightSensorChangedLocked(value, false);
             }
         }
     }
 
-    private void lightSensorChangedLocked(int value) {
+    private void lightSensorChangedLocked(int value, boolean immediate) {
         if (mDebugLightSensor) {
             Slog.d(TAG, "lightSensorChangedLocked " + value);
         }
@@ -2536,7 +2580,8 @@
 
                 if (mAutoBrightessEnabled && mScreenBrightnessOverride < 0) {
                     if (!mSkippedScreenOn) {
-                        mScreenBrightness.setTargetLocked(lcdValue, AUTOBRIGHTNESS_ANIM_STEPS,
+                        mScreenBrightness.setTargetLocked(lcdValue,
+                                immediate ? IMMEDIATE_ANIM_STEPS : AUTOBRIGHTNESS_ANIM_STEPS,
                                 INITIAL_SCREEN_BRIGHTNESS, (int)mScreenBrightness.curValue);
                     }
                 }
@@ -2684,7 +2729,7 @@
                         if (mLightSensorValue >= 0) {
                             int value = (int)mLightSensorValue;
                             mLightSensorValue = -1;
-                            lightSensorChangedLocked(value);
+                            lightSensorChangedLocked(value, false);
                         }
                     }
                     userActivity(SystemClock.uptimeMillis(), false, BUTTON_EVENT, true);
@@ -2944,10 +2989,28 @@
                 Binder.restoreCallingIdentity(identity);
             }
 
-            // update our animation state
-            synchronized (mLocks) {
-                mScreenBrightness.targetValue = brightness;
-                mScreenBrightness.jumpToTargetLocked();
+            mScreenBrightness.targetValue = brightness;
+            mScreenBrightness.jumpToTargetLocked();
+        }
+    }
+
+    public void setAutoBrightnessAdjustment(float adj) {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
+        synchronized (mLocks) {
+            mLightSensorAdjustSetting = adj;
+            if (mSensorManager != null && mLightSensorEnabled) {
+                // clear calling identity so sensor manager battery stats are accurate
+                long identity = Binder.clearCallingIdentity();
+                try {
+                    // force recompute of backlight values
+                    if (mLightSensorValue >= 0) {
+                        int value = (int)mLightSensorValue;
+                        mLightSensorValue = -1;
+                        handleLightSensorValue(value, true);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
+                }
             }
         }
     }
@@ -3062,7 +3125,7 @@
                     if (mLightSensorValue >= 0) {
                         int value = (int)mLightSensorValue;
                         mLightSensorValue = -1;
-                        handleLightSensorValue(value);
+                        handleLightSensorValue(value, true);
                     }
                     mSensorManager.registerListener(mLightListener, mLightSensor,
                             LIGHT_SENSOR_RATE);
@@ -3122,7 +3185,7 @@
         }
     };
 
-    private void handleLightSensorValue(int value) {
+    private void handleLightSensorValue(int value, boolean immediate) {
         long milliseconds = SystemClock.elapsedRealtime();
         if (mLightSensorValue == -1 ||
                 milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
@@ -3130,7 +3193,7 @@
             mHandler.removeCallbacks(mAutoBrightnessTask);
             mLightSensorPendingDecrease = false;
             mLightSensorPendingIncrease = false;
-            lightSensorChangedLocked(value);
+            lightSensorChangedLocked(value, immediate);
         } else {
             if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
                     (value < mLightSensorValue && mLightSensorPendingIncrease) ||
@@ -3160,7 +3223,7 @@
                 if (isScreenTurningOffLocked()) {
                     return;
                 }
-                handleLightSensorValue((int)event.values[0]);
+                handleLightSensorValue((int)event.values[0], false);
             }
         }
 
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 6b61c47..090ca64 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -620,11 +620,11 @@
                         packages = new String[size];
                         components = new ArrayList[size];
                         uids = new int[size];
-                        Iterator<HashMap.Entry<String, ArrayList<String>>>
+                        Iterator<Map.Entry<String, ArrayList<String>>>
                                 it = mPendingBroadcasts.entrySet().iterator();
                         int i = 0;
                         while (it.hasNext() && i < size) {
-                            HashMap.Entry<String, ArrayList<String>> ent = it.next();
+                            Map.Entry<String, ArrayList<String>> ent = it.next();
                             packages[i] = ent.getKey();
                             components[i] = ent.getValue();
                             PackageSetting ps = mSettings.mPackages.get(ent.getKey());
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index 32aa7a4..3616aa2 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -62,6 +62,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Map;
 
 import libcore.io.IoUtils;
 
@@ -929,7 +930,7 @@
             }
             
             if (mRenamedPackages.size() > 0) {
-                for (HashMap.Entry<String, String> e : mRenamedPackages.entrySet()) {
+                for (Map.Entry<String, String> e : mRenamedPackages.entrySet()) {
                     serializer.startTag(null, "renamed-package");
                     serializer.attribute(null, "new", e.getKey());
                     serializer.attribute(null, "old", e.getValue());
@@ -2144,7 +2145,7 @@
 
         printedSomething = false;
         if (mRenamedPackages.size() > 0) {
-            for (final HashMap.Entry<String, String> e : mRenamedPackages.entrySet()) {
+            for (final Map.Entry<String, String> e : mRenamedPackages.entrySet()) {
                 if (packageName != null && !packageName.equals(e.getKey())
                         && !packageName.equals(e.getValue())) {
                     continue;
@@ -2258,4 +2259,4 @@
         pw.println("Settings parse messages:");
         pw.print(mReadMessages.toString());
     }
-}
\ No newline at end of file
+}
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java
index 8fc9a70..55fb038 100644
--- a/services/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -17,13 +17,8 @@
 package com.android.server.wm;
 
 import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
 import android.graphics.Matrix;
-import android.graphics.Paint;
 import android.graphics.PixelFormat;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
 import android.util.Slog;
 import android.view.Surface;
@@ -34,7 +29,8 @@
 
 class ScreenRotationAnimation {
     static final String TAG = "ScreenRotationAnimation";
-    static final boolean DEBUG = false;
+    static final boolean DEBUG_STATE = false;
+    static final boolean DEBUG_TRANSFORMS = false;
 
     static final int FREEZE_LAYER = WindowManagerService.TYPE_LAYER_MULTIPLIER * 200;
 
@@ -49,11 +45,51 @@
     int mOriginalWidth, mOriginalHeight;
     int mCurRotation;
 
-    Animation mExitAnimation;
+    // For all animations, "exit" is for the UI elements that are going
+    // away (that is the snapshot of the old screen), and "enter" is for
+    // the new UI elements that are appearing (that is the active windows
+    // in their final orientation).
+
+    // The starting animation for the exiting and entering elements.  This
+    // animation applies a transformation while the rotation is in progress.
+    // It is started immediately, before the new entering UI is ready.
+    Animation mStartExitAnimation;
+    final Transformation mStartExitTransformation = new Transformation();
+    Animation mStartEnterAnimation;
+    final Transformation mStartEnterTransformation = new Transformation();
+
+    // The finishing animation for the exiting and entering elements.  This
+    // animation needs to undo the transformation of the starting animation.
+    // It starts running once the new rotation UI elements are ready to be
+    // displayed.
+    Animation mFinishExitAnimation;
+    final Transformation mFinishExitTransformation = new Transformation();
+    Animation mFinishEnterAnimation;
+    final Transformation mFinishEnterTransformation = new Transformation();
+
+    // The current active animation to move from the old to the new rotated
+    // state.  Which animation is run here will depend on the old and new
+    // rotations.
+    Animation mRotateExitAnimation;
+    final Transformation mRotateExitTransformation = new Transformation();
+    Animation mRotateEnterAnimation;
+    final Transformation mRotateEnterTransformation = new Transformation();
+
+    // A previously running rotate animation.  This will be used if we need
+    // to switch to a new rotation before finishing the previous one.
+    Animation mLastRotateExitAnimation;
+    final Transformation mLastRotateExitTransformation = new Transformation();
+    Animation mLastRotateEnterAnimation;
+    final Transformation mLastRotateEnterTransformation = new Transformation();
+
+    // Complete transformations being applied.
     final Transformation mExitTransformation = new Transformation();
-    Animation mEnterAnimation;
     final Transformation mEnterTransformation = new Transformation();
+
     boolean mStarted;
+    boolean mAnimRunning;
+    boolean mFinishAnimReady;
+    long mFinishAnimStartTime;
 
     final Matrix mSnapshotInitialMatrix = new Matrix();
     final Matrix mSnapshotFinalMatrix = new Matrix();
@@ -133,7 +169,7 @@
                     mTmpFloats[Matrix.MSCALE_X], mTmpFloats[Matrix.MSKEW_Y],
                     mTmpFloats[Matrix.MSKEW_X], mTmpFloats[Matrix.MSCALE_Y]);
             mSurface.setAlpha(alpha);
-            if (DEBUG) {
+            if (DEBUG_TRANSFORMS) {
                 float[] srcPnts = new float[] { 0, 0, mWidth, mHeight };
                 float[] dstPnts = new float[4];
                 matrix.mapPoints(dstPnts, srcPnts);
@@ -167,7 +203,7 @@
     }
 
     // Must be called while in a transaction.
-    public void setRotation(int rotation) {
+    private void setRotation(int rotation) {
         mCurRotation = rotation;
 
         // Compute the transformation matrix that must be applied
@@ -176,46 +212,78 @@
         int delta = deltaRotation(rotation, mSnapshotRotation);
         createRotationMatrix(delta, mWidth, mHeight, mSnapshotInitialMatrix);
 
-        if (DEBUG) Slog.v(TAG, "**** ROTATION: " + delta);
+        if (DEBUG_STATE) Slog.v(TAG, "**** ROTATION: " + delta);
         setSnapshotTransform(mSnapshotInitialMatrix, 1.0f);
     }
 
+    // Must be called while in a transaction.
+    public boolean setRotation(int rotation, SurfaceSession session,
+            long maxAnimationDuration, float animationScale, int finalWidth, int finalHeight) {
+        setRotation(rotation);
+        return startAnimation(session, maxAnimationDuration, animationScale,
+                finalWidth, finalHeight, false);
+    }
+
     /**
      * Returns true if animating.
      */
-    public boolean dismiss(SurfaceSession session, long maxAnimationDuration,
-            float animationScale, int finalWidth, int finalHeight) {
+    private boolean startAnimation(SurfaceSession session, long maxAnimationDuration,
+            float animationScale, int finalWidth, int finalHeight, boolean dismissing) {
         if (mSurface == null) {
             // Can't do animation.
             return false;
         }
+        if (mStarted) {
+            return true;
+        }
+
+        mStarted = true;
+
+        boolean firstStart = false;
 
         // Figure out how the screen has moved from the original rotation.
         int delta = deltaRotation(mCurRotation, mOriginalRotation);
 
+        if (mFinishExitAnimation == null && (!dismissing || delta != Surface.ROTATION_0)) {
+            if (DEBUG_STATE) Slog.v(TAG, "Creating start and finish animations");
+            firstStart = true;
+            mStartExitAnimation = AnimationUtils.loadAnimation(mContext,
+                    com.android.internal.R.anim.screen_rotate_start_exit);
+            mStartEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                    com.android.internal.R.anim.screen_rotate_start_enter);
+            mFinishExitAnimation = AnimationUtils.loadAnimation(mContext,
+                    com.android.internal.R.anim.screen_rotate_finish_exit);
+            mFinishEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                    com.android.internal.R.anim.screen_rotate_finish_enter);
+        }
+
+        if (DEBUG_STATE) Slog.v(TAG, "Rotation delta: " + delta + " finalWidth="
+                + finalWidth + " finalHeight=" + finalHeight
+                + " origWidth=" + mOriginalWidth + " origHeight=" + mOriginalHeight);
+
         switch (delta) {
             case Surface.ROTATION_0:
-                mExitAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateExitAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_0_exit);
-                mEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateEnterAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_0_enter);
                 break;
             case Surface.ROTATION_90:
-                mExitAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateExitAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_plus_90_exit);
-                mEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateEnterAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_plus_90_enter);
                 break;
             case Surface.ROTATION_180:
-                mExitAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateExitAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_180_exit);
-                mEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateEnterAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_180_enter);
                 break;
             case Surface.ROTATION_270:
-                mExitAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateExitAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_minus_90_exit);
-                mEnterAnimation = AnimationUtils.loadAnimation(mContext,
+                mRotateEnterAnimation = AnimationUtils.loadAnimation(mContext,
                         com.android.internal.R.anim.screen_rotate_minus_90_enter);
                 break;
         }
@@ -224,35 +292,85 @@
         // means to allow supplying the last and next size.  In this definition
         // "%p" is the original (let's call it "previous") size, and "%" is the
         // screen's current/new size.
-        mEnterAnimation.initialize(finalWidth, finalHeight, mOriginalWidth, mOriginalHeight);
-        mExitAnimation.initialize(finalWidth, finalHeight, mOriginalWidth, mOriginalHeight);
-        mStarted = false;
+        if (firstStart) {
+            if (DEBUG_STATE) Slog.v(TAG, "Initializing start and finish animations");
+            mStartEnterAnimation.initialize(finalWidth, finalHeight,
+                    mOriginalWidth, mOriginalHeight);
+            mStartExitAnimation.initialize(finalWidth, finalHeight,
+                    mOriginalWidth, mOriginalHeight);
+            mFinishEnterAnimation.initialize(finalWidth, finalHeight,
+                    mOriginalWidth, mOriginalHeight);
+            mFinishExitAnimation.initialize(finalWidth, finalHeight,
+                    mOriginalWidth, mOriginalHeight);
+        }
+        mRotateEnterAnimation.initialize(finalWidth, finalHeight, mOriginalWidth, mOriginalHeight);
+        mRotateExitAnimation.initialize(finalWidth, finalHeight, mOriginalWidth, mOriginalHeight);
+        mAnimRunning = false;
+        mFinishAnimReady = false;
+        mFinishAnimStartTime = -1;
 
-        mExitAnimation.restrictDuration(maxAnimationDuration);
-        mExitAnimation.scaleCurrentDuration(animationScale);
-        mEnterAnimation.restrictDuration(maxAnimationDuration);
-        mEnterAnimation.scaleCurrentDuration(animationScale);
+        if (firstStart) {
+            mStartExitAnimation.restrictDuration(maxAnimationDuration);
+            mStartExitAnimation.scaleCurrentDuration(animationScale);
+            mStartEnterAnimation.restrictDuration(maxAnimationDuration);
+            mStartEnterAnimation.scaleCurrentDuration(animationScale);
+            mFinishExitAnimation.restrictDuration(maxAnimationDuration);
+            mFinishExitAnimation.scaleCurrentDuration(animationScale);
+            mFinishEnterAnimation.restrictDuration(maxAnimationDuration);
+            mFinishEnterAnimation.scaleCurrentDuration(animationScale);
+        }
+        mRotateExitAnimation.restrictDuration(maxAnimationDuration);
+        mRotateExitAnimation.scaleCurrentDuration(animationScale);
+        mRotateEnterAnimation.restrictDuration(maxAnimationDuration);
+        mRotateEnterAnimation.scaleCurrentDuration(animationScale);
 
-        if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG,
-                ">>> OPEN TRANSACTION ScreenRotationAnimation.dismiss");
-        Surface.openTransaction();
+        if (mBlackFrame == null) {
+            if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS || DEBUG_STATE) Slog.i(
+                    WindowManagerService.TAG,
+                    ">>> OPEN TRANSACTION ScreenRotationAnimation.startAnimation");
+            Surface.openTransaction();
 
-        try {
-            Rect outer = new Rect(-finalWidth, -finalHeight, finalWidth * 2, finalHeight * 2);
-            Rect inner = new Rect(0, 0, finalWidth, finalHeight);
-            mBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER);
-        } catch (Surface.OutOfResourcesException e) {
-            Slog.w(TAG, "Unable to allocate black surface", e);
-        } finally {
-            Surface.closeTransaction();
-            if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(WindowManagerService.TAG,
-                    "<<< CLOSE TRANSACTION ScreenRotationAnimation.dismiss");
+            try {
+                Rect outer = new Rect(-finalWidth*1, -finalHeight*1, finalWidth*2, finalHeight*2);
+                Rect inner = new Rect(0, 0, finalWidth, finalHeight);
+                mBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER);
+            } catch (Surface.OutOfResourcesException e) {
+                Slog.w(TAG, "Unable to allocate black surface", e);
+            } finally {
+                Surface.closeTransaction();
+                if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS || DEBUG_STATE) Slog.i(
+                        WindowManagerService.TAG,
+                        "<<< CLOSE TRANSACTION ScreenRotationAnimation.startAnimation");
+            }
         }
 
         return true;
     }
 
+    /**
+     * Returns true if animating.
+     */
+    public boolean dismiss(SurfaceSession session, long maxAnimationDuration,
+            float animationScale, int finalWidth, int finalHeight) {
+        if (DEBUG_STATE) Slog.v(TAG, "Dismiss!");
+        if (mSurface == null) {
+            // Can't do animation.
+            return false;
+        }
+        if (!mStarted) {
+            startAnimation(session, maxAnimationDuration, animationScale, finalWidth, finalHeight,
+                    true);
+        }
+        if (!mStarted) {
+            return false;
+        }
+        if (DEBUG_STATE) Slog.v(TAG, "Setting mFinishAnimReady = true");
+        mFinishAnimReady = true;
+        return true;
+    }
+
     public void kill() {
+        if (DEBUG_STATE) Slog.v(TAG, "Kill!");
         if (mSurface != null) {
             if (WindowManagerService.SHOW_TRANSACTIONS ||
                     WindowManagerService.SHOW_SURFACE_ALLOC) Slog.i(WindowManagerService.TAG,
@@ -262,74 +380,198 @@
         }
         if (mBlackFrame != null) {
             mBlackFrame.kill();
+            mBlackFrame = null;
         }
-        if (mExitAnimation != null) {
-            mExitAnimation.cancel();
-            mExitAnimation = null;
+        if (mStartExitAnimation != null) {
+            mStartExitAnimation.cancel();
+            mStartExitAnimation = null;
         }
-        if (mEnterAnimation != null) {
-            mEnterAnimation.cancel();
-            mEnterAnimation = null;
+        if (mStartEnterAnimation != null) {
+            mStartEnterAnimation.cancel();
+            mStartEnterAnimation = null;
+        }
+        if (mFinishExitAnimation != null) {
+            mFinishExitAnimation.cancel();
+            mFinishExitAnimation = null;
+        }
+        if (mStartEnterAnimation != null) {
+            mStartEnterAnimation.cancel();
+            mStartEnterAnimation = null;
+        }
+        if (mRotateExitAnimation != null) {
+            mRotateExitAnimation.cancel();
+            mRotateExitAnimation = null;
+        }
+        if (mRotateEnterAnimation != null) {
+            mRotateEnterAnimation.cancel();
+            mRotateEnterAnimation = null;
         }
     }
 
     public boolean isAnimating() {
-        return mEnterAnimation != null || mExitAnimation != null;
+        return mStartEnterAnimation != null || mStartExitAnimation != null
+                && mFinishEnterAnimation != null || mFinishExitAnimation != null
+                && mRotateEnterAnimation != null || mRotateExitAnimation != null;
     }
 
     public boolean stepAnimation(long now) {
-        if (mEnterAnimation == null && mExitAnimation == null) {
+        if (!isAnimating()) {
+            if (DEBUG_STATE) Slog.v(TAG, "Step: no animations running");
             return false;
         }
 
-        if (!mStarted) {
-            if (mEnterAnimation != null) {
-                mEnterAnimation.setStartTime(now);
+        if (!mAnimRunning) {
+            if (DEBUG_STATE) Slog.v(TAG, "Step: starting start, finish, rotate");
+            if (mStartEnterAnimation != null) {
+                mStartEnterAnimation.setStartTime(now);
             }
-            if (mExitAnimation != null) {
-                mExitAnimation.setStartTime(now);
+            if (mStartExitAnimation != null) {
+                mStartExitAnimation.setStartTime(now);
             }
-            mStarted = true;
+            if (mFinishEnterAnimation != null) {
+                mFinishEnterAnimation.setStartTime(0);
+            }
+            if (mFinishExitAnimation != null) {
+                mFinishExitAnimation.setStartTime(0);
+            }
+            if (mRotateEnterAnimation != null) {
+                mRotateEnterAnimation.setStartTime(now);
+            }
+            if (mRotateExitAnimation != null) {
+                mRotateExitAnimation.setStartTime(now);
+            }
+            mAnimRunning = true;
         }
 
-        mExitTransformation.clear();
-        boolean moreExit = false;
-        if (mExitAnimation != null) {
-            moreExit = mExitAnimation.getTransformation(now, mExitTransformation);
-            if (DEBUG) Slog.v(TAG, "Stepped exit: " + mExitTransformation);
-            if (!moreExit) {
-                if (DEBUG) Slog.v(TAG, "Exit animation done!");
-                mExitAnimation.cancel();
-                mExitAnimation = null;
-                mExitTransformation.clear();
-                if (mSurface != null) {
-                    mSurface.hide();
-                }
+        if (mFinishAnimReady && mFinishAnimStartTime < 0) {
+            if (DEBUG_STATE) Slog.v(TAG, "Step: finish anim now ready");
+            mFinishAnimStartTime = now;
+        }
+
+        // If the start animation is no longer running, we want to keep its
+        // transformation intact until the finish animation also completes.
+
+        boolean moreStartExit = false;
+        if (mStartExitAnimation != null) {
+            mStartExitTransformation.clear();
+            moreStartExit = mStartExitAnimation.getTransformation(now, mStartExitTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped start exit: " + mStartExitTransformation);
+            if (!moreStartExit) {
+                if (DEBUG_STATE) Slog.v(TAG, "Start exit animation done!");
+                mStartExitAnimation.cancel();
+                mStartExitAnimation = null;
             }
         }
 
-        mEnterTransformation.clear();
-        boolean moreEnter = false;
-        if (mEnterAnimation != null) {
-            moreEnter = mEnterAnimation.getTransformation(now, mEnterTransformation);
-            if (!moreEnter) {
-                mEnterAnimation.cancel();
-                mEnterAnimation = null;
-                mEnterTransformation.clear();
-                if (mBlackFrame != null) {
-                    mBlackFrame.hide();
-                }
-            } else {
-                if (mBlackFrame != null) {
-                    mBlackFrame.setMatrix(mEnterTransformation.getMatrix());
-                }
+        boolean moreStartEnter = false;
+        if (mStartEnterAnimation != null) {
+            mStartEnterTransformation.clear();
+            moreStartEnter = mStartEnterAnimation.getTransformation(now, mStartEnterTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped start enter: " + mStartEnterTransformation);
+            if (!moreStartEnter) {
+                if (DEBUG_STATE) Slog.v(TAG, "Start enter animation done!");
+                mStartEnterAnimation.cancel();
+                mStartEnterAnimation = null;
+            }
+        }
+
+        long finishNow = mFinishAnimReady ? (now - mFinishAnimStartTime) : 0;
+        if (DEBUG_STATE) Slog.v(TAG, "Step: finishNow=" + finishNow);
+
+        mFinishExitTransformation.clear();
+        boolean moreFinishExit = false;
+        if (mFinishExitAnimation != null) {
+            moreFinishExit = mFinishExitAnimation.getTransformation(finishNow, mFinishExitTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped finish exit: " + mFinishExitTransformation);
+            if (!moreStartExit && !moreFinishExit) {
+                if (DEBUG_STATE) Slog.v(TAG, "Finish exit animation done, clearing start/finish anims!");
+                mStartExitTransformation.clear();
+                mFinishExitAnimation.cancel();
+                mFinishExitAnimation = null;
+                mFinishExitTransformation.clear();
+            }
+        }
+
+        mFinishEnterTransformation.clear();
+        boolean moreFinishEnter = false;
+        if (mFinishEnterAnimation != null) {
+            moreFinishEnter = mFinishEnterAnimation.getTransformation(finishNow, mFinishEnterTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped finish enter: " + mFinishEnterTransformation);
+            if (!moreStartEnter && !moreFinishEnter) {
+                if (DEBUG_STATE) Slog.v(TAG, "Finish enter animation done, clearing start/finish anims!");
+                mStartEnterTransformation.clear();
+                mFinishEnterAnimation.cancel();
+                mFinishEnterAnimation = null;
+                mFinishEnterTransformation.clear();
+            }
+        }
+
+        mRotateExitTransformation.clear();
+        boolean moreRotateExit = false;
+        if (mRotateExitAnimation != null) {
+            moreRotateExit = mRotateExitAnimation.getTransformation(now, mRotateExitTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped rotate exit: " + mRotateExitTransformation);
+        }
+
+        if (!moreFinishExit && !moreRotateExit) {
+            if (DEBUG_STATE) Slog.v(TAG, "Rotate exit animation done!");
+            mRotateExitAnimation.cancel();
+            mRotateExitAnimation = null;
+            mRotateExitTransformation.clear();
+        }
+
+        mRotateEnterTransformation.clear();
+        boolean moreRotateEnter = false;
+        if (mRotateEnterAnimation != null) {
+            moreRotateEnter = mRotateEnterAnimation.getTransformation(now, mRotateEnterTransformation);
+            if (DEBUG_TRANSFORMS) Slog.v(TAG, "Stepped rotate enter: " + mRotateEnterTransformation);
+        }
+
+        if (!moreFinishEnter && !moreRotateEnter) {
+            if (DEBUG_STATE) Slog.v(TAG, "Rotate enter animation done!");
+            mRotateEnterAnimation.cancel();
+            mRotateEnterAnimation = null;
+            mRotateEnterTransformation.clear();
+        }
+
+        mExitTransformation.set(mRotateExitTransformation);
+        mExitTransformation.compose(mStartExitTransformation);
+        mExitTransformation.compose(mFinishExitTransformation);
+
+        mEnterTransformation.set(mRotateEnterTransformation);
+        mEnterTransformation.compose(mStartEnterTransformation);
+        mEnterTransformation.compose(mFinishEnterTransformation);
+
+        if (DEBUG_TRANSFORMS) Slog.v(TAG, "Final exit: " + mExitTransformation);
+        if (DEBUG_TRANSFORMS) Slog.v(TAG, "Final enter: " + mEnterTransformation);
+
+        if (!moreStartExit && !moreFinishExit && !moreRotateExit) {
+            if (mSurface != null) {
+                if (DEBUG_STATE) Slog.v(TAG, "Exit animations done, hiding screenshot surface");
+                mSurface.hide();
+            }
+        }
+
+        if (!moreStartEnter && !moreFinishEnter && !moreRotateEnter) {
+            if (mBlackFrame != null) {
+                if (DEBUG_STATE) Slog.v(TAG, "Enter animations done, hiding black frame");
+                mBlackFrame.hide();
+            }
+        } else {
+            if (mBlackFrame != null) {
+                mBlackFrame.setMatrix(mEnterTransformation.getMatrix());
             }
         }
 
         mSnapshotFinalMatrix.setConcat(mExitTransformation.getMatrix(), mSnapshotInitialMatrix);
         setSnapshotTransform(mSnapshotFinalMatrix, mExitTransformation.getAlpha());
 
-        return moreEnter || moreExit;
+        final boolean more = moreStartEnter || moreStartExit || moreFinishEnter || moreFinishExit
+                || moreRotateEnter || moreRotateExit || !mFinishAnimReady;
+
+        if (DEBUG_STATE) Slog.v(TAG, "Step: more=" + more);
+
+        return more;
     }
 
     public Transformation getEnterTransformation() {
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 6ff0100..aad562c 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -733,7 +733,7 @@
             //Looper.myLooper().setMessageLogging(new LogPrinter(
             //        Log.VERBOSE, "WindowManagerPolicy", Log.LOG_ID_SYSTEM));
             android.os.Process.setThreadPriority(
-                    android.os.Process.THREAD_PRIORITY_FOREGROUND);
+                    android.os.Process.THREAD_PRIORITY_DISPLAY);
             android.os.Process.setCanSelfBackground(false);
             mPolicy.init(mContext, mService, mService, mPM);
 
@@ -3446,7 +3446,7 @@
             // the value of the previous configuration.
             mTempConfiguration.setToDefaults();
             mTempConfiguration.fontScale = currentConfig.fontScale;
-            if (computeNewConfigurationLocked(mTempConfiguration)) {
+            if (computeScreenConfigurationLocked(mTempConfiguration)) {
                 if (currentConfig.diff(mTempConfiguration) != 0) {
                     mWaitingForConfig = true;
                     mLayoutNeeded = true;
@@ -5362,6 +5362,14 @@
         startFreezingDisplayLocked(inTransaction);
         mInputManager.setDisplayOrientation(0, rotation);
 
+        // We need to update our screen size information to match the new
+        // rotation.  Note that this is redundant with the later call to
+        // sendNewConfiguration() that must be called after this function
+        // returns...  however we need to do the screen size part of that
+        // before then so we have the correct size to use when initializiation
+        // the rotation animation for the new rotation.
+        computeScreenConfigurationLocked(null);
+
         if (!inTransaction) {
             if (SHOW_TRANSACTIONS)  Slog.i(TAG,
                     ">>> OPEN TRANSACTION setRotationUnchecked");
@@ -5372,7 +5380,11 @@
             //       it doesn't support hardware OpenGL emulation yet.
             if (CUSTOM_SCREEN_ROTATION && mScreenRotationAnimation != null
                     && mScreenRotationAnimation.hasScreenshot()) {
-                mScreenRotationAnimation.setRotation(rotation);
+                if (mScreenRotationAnimation.setRotation(rotation, mFxSession,
+                        MAX_ANIMATION_DURATION, mTransitionAnimationScale,
+                        mCurDisplayWidth, mCurDisplayHeight)) {
+                    requestAnimationLocked(0);
+                }
             }
             Surface.setOrientation(0, rotation);
         } finally {
@@ -5860,7 +5872,7 @@
     Configuration computeNewConfigurationLocked() {
         Configuration config = new Configuration();
         config.fontScale = 0;
-        if (!computeNewConfigurationLocked(config)) {
+        if (!computeScreenConfigurationLocked(config)) {
             return null;
         }
         return config;
@@ -6011,12 +6023,10 @@
         return sw;
     }
 
-    boolean computeNewConfigurationLocked(Configuration config) {
+    boolean computeScreenConfigurationLocked(Configuration config) {
         if (mDisplay == null) {
             return false;
         }
-        
-        mInputManager.getInputConfiguration(config);
 
         // Use the effective "visual" dimensions based on current rotation
         final boolean rotated = (mRotation == Surface.ROTATION_90
@@ -6050,13 +6060,17 @@
         final int dw = mCurDisplayWidth;
         final int dh = mCurDisplayHeight;
 
-        int orientation = Configuration.ORIENTATION_SQUARE;
-        if (dw < dh) {
-            orientation = Configuration.ORIENTATION_PORTRAIT;
-        } else if (dw > dh) {
-            orientation = Configuration.ORIENTATION_LANDSCAPE;
+        if (config != null) {
+            mInputManager.getInputConfiguration(config);
+
+            int orientation = Configuration.ORIENTATION_SQUARE;
+            if (dw < dh) {
+                orientation = Configuration.ORIENTATION_PORTRAIT;
+            } else if (dw > dh) {
+                orientation = Configuration.ORIENTATION_LANDSCAPE;
+            }
+            config.orientation = orientation;
         }
-        config.orientation = orientation;
 
         // Update real display metrics.
         mDisplay.getMetricsWithSize(mRealDisplayMetrics, mCurDisplayWidth, mCurDisplayHeight);
@@ -6078,36 +6092,39 @@
         mCompatibleScreenScale = CompatibilityInfo.computeCompatibleScaling(dm,
                 mCompatDisplayMetrics);
 
-        config.screenWidthDp = (int)(mPolicy.getConfigDisplayWidth(dw, dh, mRotation)
-                / dm.density);
-        config.screenHeightDp = (int)(mPolicy.getConfigDisplayHeight(dw, dh, mRotation)
-                / dm.density);
-        computeSmallestWidthAndScreenLayout(rotated, dw, dh, dm.density, config);
+        if (config != null) {
+            config.screenWidthDp = (int)(mPolicy.getConfigDisplayWidth(dw, dh, mRotation)
+                    / dm.density);
+            config.screenHeightDp = (int)(mPolicy.getConfigDisplayHeight(dw, dh, mRotation)
+                    / dm.density);
+            computeSmallestWidthAndScreenLayout(rotated, dw, dh, dm.density, config);
 
-        config.compatScreenWidthDp = (int)(config.screenWidthDp / mCompatibleScreenScale);
-        config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale);
-        config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh);
+            config.compatScreenWidthDp = (int)(config.screenWidthDp / mCompatibleScreenScale);
+            config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale);
+            config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh);
 
-        // Determine whether a hard keyboard is available and enabled.
-        boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
-        if (hardKeyboardAvailable != mHardKeyboardAvailable) {
-            mHardKeyboardAvailable = hardKeyboardAvailable;
-            mHardKeyboardEnabled = hardKeyboardAvailable;
+            // Determine whether a hard keyboard is available and enabled.
+            boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
+            if (hardKeyboardAvailable != mHardKeyboardAvailable) {
+                mHardKeyboardAvailable = hardKeyboardAvailable;
+                mHardKeyboardEnabled = hardKeyboardAvailable;
 
-            mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
-            mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
-        }
-        if (!mHardKeyboardEnabled) {
-            config.keyboard = Configuration.KEYBOARD_NOKEYS;
+                mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
+                mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
+            }
+            if (!mHardKeyboardEnabled) {
+                config.keyboard = Configuration.KEYBOARD_NOKEYS;
+            }
+
+            // Update value of keyboardHidden, hardKeyboardHidden and navigationHidden
+            // based on whether a hard or soft keyboard is present, whether navigation keys
+            // are present and the lid switch state.
+            config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
+            config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+            config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO;
+            mPolicy.adjustConfigurationLw(config);
         }
 
-        // Update value of keyboardHidden, hardKeyboardHidden and navigationHidden
-        // based on whether a hard or soft keyboard is present, whether navigation keys
-        // are present and the lid switch state.
-        config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
-        config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
-        config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO;
-        mPolicy.adjustConfigurationLw(config);
         return true;
     }
 
@@ -7114,7 +7131,7 @@
         boolean configChanged = updateOrientationFromAppTokensLocked(false);
         mTempConfiguration.setToDefaults();
         mTempConfiguration.fontScale = mCurConfiguration.fontScale;
-        if (computeNewConfigurationLocked(mTempConfiguration)) {
+        if (computeScreenConfigurationLocked(mTempConfiguration)) {
             if (mCurConfiguration.diff(mTempConfiguration) != 0) {
                 configChanged = true;
             }
@@ -9422,6 +9439,10 @@
         return mPolicy.hasNavigationBar();
     }
 
+    public void lockNow() {
+        mPolicy.lockNow();
+    }
+
     void dumpInput(FileDescriptor fd, PrintWriter pw, boolean dumpAll) {
         pw.println("WINDOW MANAGER INPUT (dumpsys window input)");
         mInputManager.dump(pw);
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index 794515b..9118381 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -1449,7 +1449,7 @@
         return mViewVisibility == View.GONE
                 || !mRelayoutCalled
                 || (atoken == null && mRootToken.hidden)
-                || (atoken != null && (atoken.hiddenRequested || atoken.hidden))
+                || (atoken != null && atoken.hiddenRequested)
                 || mAttachedHidden
                 || mExiting || mDestroying;
     }
diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java
index ffe848d..1336818 100644
--- a/telephony/java/com/android/internal/telephony/DataConnection.java
+++ b/telephony/java/com/android/internal/telephony/DataConnection.java
@@ -68,6 +68,8 @@
     private List<ApnContext> mApnList = null;
     PendingIntent mReconnectIntent = null;
 
+    private DataConnectionTracker mDataConnectionTracker = null;
+
     /**
      * Used internally for saving connecting parameters.
      */
@@ -202,6 +204,7 @@
     protected static final int EVENT_DEACTIVATE_DONE = BASE + 3;
     protected static final int EVENT_DISCONNECT = BASE + 4;
     protected static final int EVENT_RIL_CONNECTED = BASE + 5;
+    protected static final int EVENT_DISCONNECT_ALL = BASE + 6;
 
     //***** Tag IDs for EventLog
     protected static final int EVENT_LOG_BAD_DNS_ADDRESS = 50100;
@@ -234,10 +237,12 @@
 
 
    //***** Constructor
-    protected DataConnection(PhoneBase phone, String name, int id, RetryManager rm) {
+    protected DataConnection(PhoneBase phone, String name, int id, RetryManager rm,
+            DataConnectionTracker dct) {
         super(name);
         if (DBG) log("DataConnection constructor E");
         this.phone = phone;
+        this.mDataConnectionTracker = dct;
         mId = id;
         mRetryMgr = rm;
         this.cid = -1;
@@ -316,11 +321,16 @@
      *
      * @param dp is the DisconnectParams.
      */
-    private void notifyDisconnectCompleted(DisconnectParams dp) {
+    private void notifyDisconnectCompleted(DisconnectParams dp, boolean sendAll) {
         if (VDBG) log("NotifyDisconnectCompleted");
 
+        ApnContext alreadySent = null;
+        String reason = null;
+
         if (dp.onCompletedMsg != null) {
             Message msg = dp.onCompletedMsg;
+            alreadySent = (ApnContext)msg.obj;
+            reason = dp.reason;
             if (VDBG) {
                 log(String.format("msg=%s msg.obj=%s", msg.toString(),
                     ((msg.obj instanceof String) ? (String) msg.obj : "<no-reason>")));
@@ -328,6 +338,17 @@
             AsyncResult.forMessage(msg);
             msg.sendToTarget();
         }
+        if (sendAll) {
+            for (ApnContext a : mApnList) {
+                if (a == alreadySent) continue;
+                if (reason != null) a.setReason(reason);
+                Message msg = mDataConnectionTracker.obtainMessage(
+                        DataConnectionTracker.EVENT_DISCONNECT_DONE, a);
+                AsyncResult.forMessage(msg);
+                msg.sendToTarget();
+            }
+        }
+
         if (DBG) log("NotifyDisconnectCompleted DisconnectParams=" + dp);
     }
 
@@ -706,6 +727,13 @@
                     deferMessage(msg);
                     break;
 
+                case EVENT_DISCONNECT_ALL:
+                    if (DBG) {
+                        log("DcDefaultState deferring msg.what=EVENT_DISCONNECT_ALL" + mRefCount);
+                    }
+                    deferMessage(msg);
+                    break;
+
                 case EVENT_RIL_CONNECTED:
                     ar = (AsyncResult)msg.obj;
                     if (ar.exception == null) {
@@ -771,7 +799,7 @@
             }
             if (mDisconnectParams != null) {
                 if (VDBG) log("DcInactiveState: enter notifyDisconnectCompleted");
-                notifyDisconnectCompleted(mDisconnectParams);
+                notifyDisconnectCompleted(mDisconnectParams, true);
             }
             clearSettings();
         }
@@ -812,7 +840,13 @@
 
                 case EVENT_DISCONNECT:
                     if (DBG) log("DcInactiveState: msg.what=EVENT_DISCONNECT");
-                    notifyDisconnectCompleted((DisconnectParams)msg.obj);
+                    notifyDisconnectCompleted((DisconnectParams)msg.obj, false);
+                    retVal = HANDLED;
+                    break;
+
+                case EVENT_DISCONNECT_ALL:
+                    if (DBG) log("DcInactiveState: msg.what=EVENT_DISCONNECT_ALL");
+                    notifyDisconnectCompleted((DisconnectParams)msg.obj, false);
                     retVal = HANDLED;
                     break;
 
@@ -989,12 +1023,24 @@
                         transitionTo(mDisconnectingState);
                     } else {
                         if (msg.obj != null) {
-                            notifyDisconnectCompleted((DisconnectParams) msg.obj);
+                            notifyDisconnectCompleted((DisconnectParams) msg.obj, false);
                         }
                     }
                     retVal = HANDLED;
                     break;
 
+                case EVENT_DISCONNECT_ALL:
+                    if (DBG) {
+                        log("DcActiveState msg.what=EVENT_DISCONNECT_ALL RefCount=" + mRefCount);
+                    }
+                    mRefCount = 0;
+                    DisconnectParams dp = (DisconnectParams) msg.obj;
+                    dp.tag = mTag;
+                    tearDownData(dp);
+                    transitionTo(mDisconnectingState);
+                    retVal = HANDLED;
+                    break;
+
                 default:
                     if (VDBG) {
                         log("DcActiveState not handled msg.what=0x" +
@@ -1124,4 +1170,16 @@
     public void tearDown(String reason, Message onCompletedMsg) {
         sendMessage(obtainMessage(EVENT_DISCONNECT, new DisconnectParams(reason, onCompletedMsg)));
     }
+
+    /**
+     * Tear down the connection through the apn on the network.  Ignores refcount and
+     * and always tears down.
+     *
+     * @param onCompletedMsg is sent with its msg.obj as an AsyncResult object.
+     *        With AsyncResult.userObj set to the original msg.obj.
+     */
+    public void tearDownAll(String reason, Message onCompletedMsg) {
+        sendMessage(obtainMessage(EVENT_DISCONNECT_ALL,
+                new DisconnectParams(reason, onCompletedMsg)));
+    }
 }
diff --git a/telephony/java/com/android/internal/telephony/cat/BerTlv.java b/telephony/java/com/android/internal/telephony/cat/BerTlv.java
index 774bfa3..095e65b 100644
--- a/telephony/java/com/android/internal/telephony/cat/BerTlv.java
+++ b/telephony/java/com/android/internal/telephony/cat/BerTlv.java
@@ -81,12 +81,18 @@
                     temp = data[curIndex++] & 0xff;
                     if (temp < 0x80) {
                         throw new ResultException(
-                                ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                                ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                                "length < 0x80 length=" + Integer.toHexString(length) +
+                                " curIndex=" + curIndex + " endIndex=" + endIndex);
+
                     }
                     length = temp;
                 } else {
                     throw new ResultException(
-                            ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                            ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                            "Expected first byte to be length or a length tag and < 0x81" +
+                            " byte= " + Integer.toHexString(temp) + " curIndex=" + curIndex +
+                            " endIndex=" + endIndex);
                 }
             } else {
                 if (ComprehensionTlvTag.COMMAND_DETAILS.value() == (tag & ~0x80)) {
@@ -95,14 +101,18 @@
                 }
             }
         } catch (IndexOutOfBoundsException e) {
-            throw new ResultException(ResultCode.REQUIRED_VALUES_MISSING);
+            throw new ResultException(ResultCode.REQUIRED_VALUES_MISSING,
+                    "IndexOutOfBoundsException " +
+                    " curIndex=" + curIndex + " endIndex=" + endIndex);
         } catch (ResultException e) {
-            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD, e.explanation());
         }
 
         /* COMPREHENSION-TLVs */
         if (endIndex - curIndex < length) {
-            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                    "Command had extra data endIndex=" + endIndex + " curIndex=" + curIndex +
+                    " length=" + length);
         }
 
         List<ComprehensionTlv> ctlvs = ComprehensionTlv.decodeMany(data,
diff --git a/telephony/java/com/android/internal/telephony/cat/CatService.java b/telephony/java/com/android/internal/telephony/cat/CatService.java
index 97fb73d..2b37072 100644
--- a/telephony/java/com/android/internal/telephony/cat/CatService.java
+++ b/telephony/java/com/android/internal/telephony/cat/CatService.java
@@ -427,11 +427,11 @@
                     }
                     break;
                 default:
-                    CatLog.d(this, "encodeOptionalTags() Unsupported Cmd:" + cmdDet.typeOfCommand);
+                    CatLog.d(this, "encodeOptionalTags() Unsupported Cmd details=" + cmdDet);
                     break;
             }
         } else {
-            CatLog.d(this, "encodeOptionalTags() bad Cmd:" + cmdDet.typeOfCommand);
+            CatLog.d(this, "encodeOptionalTags() bad Cmd details=" + cmdDet);
         }
     }
 
diff --git a/telephony/java/com/android/internal/telephony/cat/CommandDetails.java b/telephony/java/com/android/internal/telephony/cat/CommandDetails.java
index e3f0798..8579535 100644
--- a/telephony/java/com/android/internal/telephony/cat/CommandDetails.java
+++ b/telephony/java/com/android/internal/telephony/cat/CommandDetails.java
@@ -74,6 +74,14 @@
     public int describeContents() {
         return 0;
     }
+
+    @Override
+    public String toString() {
+        return "CmdDetails: compRequired=" + compRequired +
+                " commandNumber=" + commandNumber +
+                " typeOfCommand=" + typeOfCommand +
+                " commandQualifier=" + commandQualifier;
+    }
 }
 
 class DeviceIdentities extends ValueObject {
diff --git a/telephony/java/com/android/internal/telephony/cat/CommandParams.java b/telephony/java/com/android/internal/telephony/cat/CommandParams.java
index 959c9e2..79f6ad2 100644
--- a/telephony/java/com/android/internal/telephony/cat/CommandParams.java
+++ b/telephony/java/com/android/internal/telephony/cat/CommandParams.java
@@ -34,6 +34,11 @@
     }
 
     boolean setIcon(Bitmap icon) { return true; }
+
+    @Override
+    public String toString() {
+        return cmdDet.toString();
+    }
 }
 
 class DisplayTextParams extends CommandParams {
diff --git a/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java
index 89c1329..a554012 100644
--- a/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java
+++ b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java
@@ -83,7 +83,8 @@
                 try {
                     cmdDet = ValueParser.retrieveCommandDetails(ctlvCmdDet);
                 } catch (ResultException e) {
-                    CatLog.d(this, "Failed to procees command details");
+                    CatLog.d(this,
+                            "processCommandDetails: Failed to procees command details e=" + e);
                 }
             }
         }
@@ -178,6 +179,7 @@
                 return;
             }
         } catch (ResultException e) {
+            CatLog.d(this, "make: caught ResultException e=" + e);
             mCmdParams = new CommandParams(cmdDet);
             sendCmdParams(e.result());
             return;
diff --git a/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java
index ab26d13..22cd5a4 100644
--- a/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java
+++ b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java
@@ -16,6 +16,8 @@
 
 package com.android.internal.telephony.cat;
 
+import android.util.Log;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -94,7 +96,6 @@
                 startIndex = ctlv.mValueIndex + ctlv.mLength;
             } else {
                 CatLog.d(LOG_TAG, "decodeMany: ctlv is null, stop decoding");
-                items.clear();
                 break;
             }
         }
@@ -112,10 +113,10 @@
      */
     public static ComprehensionTlv decode(byte[] data, int startIndex)
             throws ResultException {
-        try {
-            int curIndex = startIndex;
-            int endIndex = data.length;
+        int curIndex = startIndex;
+        int endIndex = data.length;
 
+        try {
             /* tag */
             int tag;
             boolean cr; // Comprehension required flag
@@ -124,9 +125,11 @@
             case 0:
             case 0xff:
             case 0x80:
-                // for error handling
-                // these one make exception while decoding the abnormal command.
-                // (in case of Ghana MTN simcard , JDI simcard)
+                Log.d("CAT     ", "decode: unexpected first tag byte=" + Integer.toHexString(temp) +
+                        ", startIndex=" + startIndex + " curIndex=" + curIndex +
+                        " endIndex=" + endIndex);
+                // Return null which will stop decoding, this has occurred
+                // with Ghana MTN simcard and JDI simcard.
                 return null;
 
             case 0x7f: // tag is in three-byte format
@@ -153,7 +156,10 @@
                 length = data[curIndex++] & 0xff;
                 if (length < 0x80) {
                     throw new ResultException(
-                            ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                            ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                            "length < 0x80 length=" + Integer.toHexString(length) +
+                            " startIndex=" + startIndex + " curIndex=" + curIndex +
+                            " endIndex=" + endIndex);
                 }
             } else if (temp == 0x82) {
                 length = ((data[curIndex] & 0xff) << 8)
@@ -161,7 +167,10 @@
                 curIndex += 2;
                 if (length < 0x100) {
                     throw new ResultException(
-                            ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                            ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                            "two byte length < 0x100 length=" + Integer.toHexString(length) +
+                            " startIndex=" + startIndex + " curIndex=" + curIndex +
+                            " endIndex=" + endIndex);
                 }
             } else if (temp == 0x83) {
                 length = ((data[curIndex] & 0xff) << 16)
@@ -170,16 +179,25 @@
                 curIndex += 3;
                 if (length < 0x10000) {
                     throw new ResultException(
-                            ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                            ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                            "three byte length < 0x10000 length=0x" + Integer.toHexString(length) +
+                            " startIndex=" + startIndex + " curIndex=" + curIndex +
+                            " endIndex=" + endIndex);
                 }
             } else {
-                throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+                throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                        "Bad length modifer=" + temp +
+                        " startIndex=" + startIndex + " curIndex=" + curIndex +
+                        " endIndex=" + endIndex);
+
             }
 
             return new ComprehensionTlv(tag, cr, length, data, curIndex);
 
         } catch (IndexOutOfBoundsException e) {
-            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
+            throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD,
+                    "IndexOutOfBoundsException" + " startIndex=" + startIndex +
+                    " curIndex=" + curIndex + " endIndex=" + endIndex);
         }
     }
 }
diff --git a/telephony/java/com/android/internal/telephony/cat/ResultException.java b/telephony/java/com/android/internal/telephony/cat/ResultException.java
index 1c2cb63..84879c2 100644
--- a/telephony/java/com/android/internal/telephony/cat/ResultException.java
+++ b/telephony/java/com/android/internal/telephony/cat/ResultException.java
@@ -25,6 +25,7 @@
 public class ResultException extends CatException {
     private ResultCode mResult;
     private int mAdditionalInfo;
+    private String mExplanation;
 
     public ResultException(ResultCode result) {
         super();
@@ -48,20 +49,30 @@
 
         mResult = result;
         mAdditionalInfo = -1;
+        mExplanation = "";
+    }
+
+    public ResultException(ResultCode result, String explanation) {
+        this(result);
+        mExplanation = explanation;
     }
 
     public ResultException(ResultCode result, int additionalInfo) {
-        super();
+        this(result);
 
         if (additionalInfo < 0) {
             throw new AssertionError(
                     "Additional info must be greater than zero!");
         }
 
-        mResult = result;
         mAdditionalInfo = additionalInfo;
     }
 
+    public ResultException(ResultCode result, int additionalInfo, String explanation) {
+        this(result, additionalInfo);
+        mExplanation = explanation;
+    }
+
     public ResultCode result() {
         return mResult;
     }
@@ -73,4 +84,14 @@
     public int additionalInfo() {
         return mAdditionalInfo;
     }
+
+    public String explanation() {
+        return mExplanation;
+    }
+
+    @Override
+    public String toString() {
+        return "result=" + mResult + " additionalInfo=" + mAdditionalInfo +
+                " explantion=" + mExplanation;
+    }
 }
diff --git a/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java b/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java
index 2a1f508..fb33a8e 100644
--- a/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java
+++ b/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java
@@ -162,6 +162,7 @@
                 decodingStarted = true;
             } catch (ResultException e) {
                 // send to Service for proper RIL communication.
+                CatLog.d(this, "decodeMessageParams: caught ResultException e=" + e);
                 mCurrentRilMessage.mResCode = e.result();
                 sendCmdForExecution(mCurrentRilMessage);
                 decodingStarted = false;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java
index d55f346..a93d94f 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnection.java
@@ -20,6 +20,7 @@
 import android.util.Log;
 
 import com.android.internal.telephony.DataConnection;
+import com.android.internal.telephony.DataConnectionTracker;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.RILConstants;
 import com.android.internal.telephony.RetryManager;
@@ -32,8 +33,9 @@
     private static final String LOG_TAG = "CDMA";
 
     // ***** Constructor
-    private CdmaDataConnection(CDMAPhone phone, String name, int id, RetryManager rm) {
-        super(phone, name, id, rm);
+    private CdmaDataConnection(CDMAPhone phone, String name, int id, RetryManager rm,
+            DataConnectionTracker dct) {
+        super(phone, name, id, rm, dct);
     }
 
     /**
@@ -44,12 +46,13 @@
      * @param rm the RetryManager
      * @return CdmaDataConnection that was created.
      */
-    static CdmaDataConnection makeDataConnection(CDMAPhone phone, int id, RetryManager rm) {
+    static CdmaDataConnection makeDataConnection(CDMAPhone phone, int id, RetryManager rm,
+            DataConnectionTracker dct) {
         synchronized (mCountLock) {
             mCount += 1;
         }
         CdmaDataConnection cdmaDc = new CdmaDataConnection(phone, "CdmaDC-" + mCount,
-                id, rm);
+                id, rm, dct);
         cdmaDc.start();
         if (DBG) cdmaDc.log("Made " + cdmaDc.getName());
         return cdmaDc;
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index e16a081..3fe57ae 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -794,7 +794,7 @@
             }
 
             int id = mUniqueIdGenerator.getAndIncrement();
-            dataConn = CdmaDataConnection.makeDataConnection(mCdmaPhone, id, rm);
+            dataConn = CdmaDataConnection.makeDataConnection(mCdmaPhone, id, rm, this);
             mDataConnections.put(id, dataConn);
             DataConnectionAc dcac = new DataConnectionAc(dataConn, LOG_TAG);
             int status = dcac.fullyConnectSync(mPhone.getContext(), this, dataConn.getHandler());
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
index dbb35f2..1f28280 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnection.java
@@ -22,6 +22,7 @@
 import android.text.TextUtils;
 
 import com.android.internal.telephony.DataConnection;
+import com.android.internal.telephony.DataConnectionTracker;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneBase;
 import com.android.internal.telephony.RILConstants;
@@ -37,8 +38,9 @@
     //***** Instance Variables
     protected int mProfileId = RILConstants.DATA_PROFILE_DEFAULT;
     //***** Constructor
-    private GsmDataConnection(PhoneBase phone, String name, int id, RetryManager rm) {
-        super(phone, name, id, rm);
+    private GsmDataConnection(PhoneBase phone, String name, int id, RetryManager rm,
+            DataConnectionTracker dct) {
+        super(phone, name, id, rm, dct);
     }
 
     /**
@@ -49,11 +51,12 @@
      * @param rm the RetryManager
      * @return GsmDataConnection that was created.
      */
-    static GsmDataConnection makeDataConnection(PhoneBase phone, int id, RetryManager rm) {
+    static GsmDataConnection makeDataConnection(PhoneBase phone, int id, RetryManager rm,
+            DataConnectionTracker dct) {
         synchronized (mCountLock) {
             mCount += 1;
         }
-        GsmDataConnection gsmDc = new GsmDataConnection(phone, "GsmDC-" + mCount, id, rm);
+        GsmDataConnection gsmDc = new GsmDataConnection(phone, "GsmDC-" + mCount, id, rm, dct);
         gsmDc.start();
         if (DBG) gsmDc.log("Made " + gsmDc.getName());
         return gsmDc;
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 6096cb0..8f04dba 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -136,7 +136,8 @@
     private static final String INTENT_DATA_STALL_ALARM =
         "com.android.internal.telephony.gprs-data-stall";
 
-    static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn");
+    static final Uri PREFERAPN_NO_UPDATE_URI =
+                        Uri.parse("content://telephony/carriers/preferapn_no_update");
     static final String APN_ID = "apn_id";
     private boolean canSetPreferApn = false;
 
@@ -849,9 +850,28 @@
                 // Connection is still there. Try to clean up.
                 if (dcac != null) {
                     if (apnContext.getState() != State.DISCONNECTING) {
-                        if (DBG) log("cleanUpConnection: tearing down");
+                        boolean disconnectAll = false;
+                        if (Phone.APN_TYPE_DUN.equals(apnContext.getApnType())) {
+                            ApnSetting dunSetting = fetchDunApn();
+                            if (dunSetting != null &&
+                                    dunSetting.equals(apnContext.getApnSetting())) {
+                                if (DBG) log("tearing down dedicated DUN connection");
+                                // we need to tear it down - we brought it up just for dun and
+                                // other people are camped on it and now dun is done.  We need
+                                // to stop using it and let the normal apn list get used to find
+                                // connections for the remaining desired connections
+                                disconnectAll = true;
+                            }
+                        }
+                        if (DBG) {
+                            log("cleanUpConnection: tearing down" + (disconnectAll ? " all" :""));
+                        }
                         Message msg = obtainMessage(EVENT_DISCONNECT_DONE, apnContext);
-                        apnContext.getDataConnection().tearDown(apnContext.getReason(), msg);
+                        if (disconnectAll) {
+                            apnContext.getDataConnection().tearDownAll(apnContext.getReason(), msg);
+                        } else {
+                            apnContext.getDataConnection().tearDown(apnContext.getReason(), msg);
+                        }
                         apnContext.setState(State.DISCONNECTING);
                     }
                 } else {
@@ -2227,7 +2247,7 @@
 
         RetryManager rm = new RetryManager();
         int id = mUniqueIdGenerator.getAndIncrement();
-        GsmDataConnection conn = GsmDataConnection.makeDataConnection(mPhone, id, rm);
+        GsmDataConnection conn = GsmDataConnection.makeDataConnection(mPhone, id, rm, this);
         mDataConnections.put(id, conn);
         DataConnectionAc dcac = new DataConnectionAc(conn, LOG_TAG);
         int status = dcac.fullyConnectSync(mPhone.getContext(), this, conn.getHandler());
@@ -2357,26 +2377,30 @@
 
     private void setPreferredApn(int pos) {
         if (!canSetPreferApn) {
+            log("setPreferredApn: X !canSEtPreferApn");
             return;
         }
 
+        log("setPreferredApn: delete");
         ContentResolver resolver = mPhone.getContext().getContentResolver();
-        resolver.delete(PREFERAPN_URI, null, null);
+        resolver.delete(PREFERAPN_NO_UPDATE_URI, null, null);
 
         if (pos >= 0) {
+            log("setPreferredApn: insert");
             ContentValues values = new ContentValues();
             values.put(APN_ID, pos);
-            resolver.insert(PREFERAPN_URI, values);
+            resolver.insert(PREFERAPN_NO_UPDATE_URI, values);
         }
     }
 
     private ApnSetting getPreferredApn() {
         if (mAllApns.isEmpty()) {
+            log("getPreferredApn: X not found mAllApns.isEmpty");
             return null;
         }
 
         Cursor cursor = mPhone.getContext().getContentResolver().query(
-                PREFERAPN_URI, new String[] { "_id", "name", "apn" },
+                PREFERAPN_NO_UPDATE_URI, new String[] { "_id", "name", "apn" },
                 null, null, Telephony.Carriers.DEFAULT_SORT_ORDER);
 
         if (cursor != null) {
@@ -2391,6 +2415,7 @@
             pos = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID));
             for(ApnSetting p:mAllApns) {
                 if (p.id == pos && p.canHandleType(mRequestedApnType)) {
+                    log("getPreferredApn: X found apnSetting" + p);
                     cursor.close();
                     return p;
                 }
@@ -2401,6 +2426,7 @@
             cursor.close();
         }
 
+        log("getPreferredApn: X not found");
         return null;
     }
 
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java b/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java
index 5e2a9fd..b7d2c26 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/FsUtils.java
@@ -141,7 +141,7 @@
             } else if (!path.startsWith(HTTP_LOCAL_TESTS_PREFIX)
                     && !path.startsWith(HTTP_MEDIA_TESTS_PREFIX)
                     && !path.startsWith(HTTP_WML_TESTS_PREFIX)) {
-                url = "http://127.0.0.1:18000/" + path.substring(HTTP_TESTS_PREFIX.length());
+                url = "http://127.0.0.1:8000/" + path.substring(HTTP_TESTS_PREFIX.length());
             } else {
                 url = "file://" + path;
             }
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/forwarder/ForwardService.java b/tests/DumpRenderTree/src/com/android/dumprendertree/forwarder/ForwardService.java
index 7a277d7..25dd04fd 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/forwarder/ForwardService.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/forwarder/ForwardService.java
@@ -26,7 +26,7 @@
 
 public class ForwardService {
 
-    private ForwardServer fs18000, fs8080, fs8443;
+    private ForwardServer fs8000, fs8080, fs8443;
 
     private static ForwardService inst;
 
@@ -40,7 +40,7 @@
     private ForwardService() {
         int addr = getForwardHostAddr();
         if (addr != -1) {
-            fs18000 = new ForwardServer(18000, addr, 8000);
+            fs8000 = new ForwardServer(8000, addr, 8000);
             fs8080 = new ForwardServer(8080, addr, 8080);
             fs8443 = new ForwardServer(8443, addr, 8443);
         }
@@ -55,8 +55,8 @@
 
     public void startForwardService() {
         try {
-            if (fs18000 != null)
-                fs18000.start();
+            if (fs8000 != null)
+                fs8000.start();
             if (fs8080 != null)
                 fs8080.start();
             if (fs8443 != null)
@@ -68,9 +68,9 @@
     }
 
     public void stopForwardService() {
-        if (fs18000 != null) {
-            fs18000.stop();
-            fs18000 = null;
+        if (fs8000 != null) {
+            fs8000.stop();
+            fs8000 = null;
         }
         if (fs8080 != null) {
             fs8080.stop();
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index 6f97ff0..112c606 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -38,6 +38,15 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+
+        <activity
+                android:name="MatrixActivity"
+                android:label="_Matrix">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
         
         <activity
                 android:name="TextFadeActivity"
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java
new file mode 100644
index 0000000..1906b9d
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+
+@SuppressWarnings({"UnusedDeclaration"})
+public class MatrixActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(new MatrixView(this));
+    }
+
+    static class MatrixView extends View {
+        MatrixView(Context c) {
+            super(c);
+        }
+
+        @Override
+        protected void onDraw(Canvas canvas) {
+            super.onDraw(canvas);
+            canvas.drawRGB(255, 255, 255);
+
+            Log.d("Matrix", "m1=" + canvas.getMatrix());
+
+            canvas.save();
+            canvas.translate(10.0f, 10.0f);
+            Log.d("Matrix", "m2=" + canvas.getMatrix());
+            canvas.translate(20.0f, 20.0f);
+            Log.d("Matrix", "m3=" + canvas.getMatrix());
+            canvas.restore();
+        }
+    }
+}
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
index f0ff737..1c868d2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
@@ -58,8 +58,21 @@
             canvas.drawRGB(255, 255, 255);
             
             canvas.save();
+
+            canvas.drawLine(100.0f, 0.0f, 100.0f, getHeight(), mLargePaint);
+            
             canvas.translate(100.0f, 100.0f);
+            mLargePaint.setTextAlign(Paint.Align.LEFT);
             canvas.drawPosText(mText, mPos, mLargePaint);
+
+            canvas.translate(0.0f, 50.0f);
+            mLargePaint.setTextAlign(Paint.Align.CENTER);
+            canvas.drawPosText(mText, mPos, mLargePaint);
+
+            canvas.translate(0.0f, 50.0f);
+            mLargePaint.setTextAlign(Paint.Align.RIGHT);
+            canvas.drawPosText(mText, mPos, mLargePaint);
+
             canvas.restore();
         }
     }
diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
index f7abe8b..5446f66 100644
--- a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
+++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2011-2012 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,10 +22,10 @@
 import android.graphics.Bitmap;
 import android.renderscript.RenderScript;
 import android.renderscript.Allocation;
+import android.util.Log;
 import android.widget.ImageView;
 
 public class ComputePerf extends Activity {
-
     private LaunchTest mLT;
     private Mandelbrot mMandel;
     private RenderScript mRS;
@@ -35,14 +35,28 @@
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
 
+        final int numTries = 100;
+
+        long timesXLW = 0;
+        long timesXYW = 0;
+
         mRS = RenderScript.create(this);
         mLT = new LaunchTest(mRS, getResources());
-        mLT.run();
-        mLT.run();
+        mLT.XLW();
+        mLT.XYW();
+        for (int i = 0; i < numTries; i++) {
+            timesXLW += mLT.XLW();
+            timesXYW += mLT.XYW();
+        }
+
+        timesXLW /= numTries;
+        timesXYW /= numTries;
+
+        // XLW and XYW running times should match pretty closely
+        Log.v("ComputePerf", "xlw launch test " + timesXLW + "ms");
+        Log.v("ComputePerf", "xyw launch test " + timesXYW + "ms");
 
         mMandel = new Mandelbrot(mRS, getResources());
         mMandel.run();
-
     }
-
 }
diff --git a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
index 0c29ce1..e2312ba 100644
--- a/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
+++ b/tests/RenderScriptTests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2011-2012 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@
 import android.content.res.Resources;
 import android.renderscript.*;
 
-public class LaunchTest implements Runnable {
+public class LaunchTest {
     private RenderScript mRS;
     private Allocation mAllocationX;
     private Allocation mAllocationXY;
@@ -40,18 +40,19 @@
         mScript_xlw.bind_buf(mAllocationXY);
     }
 
-    public void run() {
+    public long XLW() {
         long t = java.lang.System.currentTimeMillis();
         mScript_xlw.forEach_root(mAllocationX);
         mRS.finish();
         t = java.lang.System.currentTimeMillis() - t;
-        android.util.Log.v("ComputePerf", "xlw launch test  ms " + t);
+        return t;
+    }
 
-        t = java.lang.System.currentTimeMillis();
+    public long XYW() {
+        long t = java.lang.System.currentTimeMillis();
         mScript_xyw.forEach_root(mAllocationXY);
         mRS.finish();
         t = java.lang.System.currentTimeMillis() - t;
-        android.util.Log.v("ComputePerf", "xyw launch test  ms " + t);
+        return t;
     }
-
 }
diff --git a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
index 8e3ed93..f797836 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
@@ -717,7 +717,7 @@
     /*package*/ static void native_drawCircle(int nativeCanvas,
             float cx, float cy, float radius, int paint) {
         native_drawOval(nativeCanvas,
-                new RectF(cx - radius, cy - radius, radius, radius),
+                new RectF(cx - radius, cy - radius, cx + radius, cy + radius),
                 paint);
     }
 
diff --git a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
index 1523823..9ebec61 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Paint_Delegate.java
@@ -904,17 +904,6 @@
     }
 
     @LayoutlibDelegate
-    /*package*/ static float native_getFontMetrics(int native_paint, FontMetrics metrics) {
-        // get the delegate from the native int.
-        Paint_Delegate delegate = sManager.getDelegate(native_paint);
-        if (delegate == null) {
-            return 0.f;
-        }
-
-        return delegate.getFontMetrics(metrics);
-    }
-
-    @LayoutlibDelegate
     /*package*/ static int native_getTextWidths(int native_object, char[] text, int index,
             int count, float[] widths) {
         // get the delegate from the native int.
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
index 1e66ca2..516725e 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeWindowManager.java
@@ -471,4 +471,8 @@
     public boolean hasNavigationBar() {
         return false; // should this return something else?
     }
+
+    public void lockNow() {
+        // TODO Auto-generated method stub
+    }
 }
diff --git a/tools/orientationplot/orientationplot.py b/tools/orientationplot/orientationplot.py
index 3a44cb2..f4e6b45 100755
--- a/tools/orientationplot/orientationplot.py
+++ b/tools/orientationplot/orientationplot.py
@@ -82,6 +82,7 @@
     self.raw_acceleration_x = self._make_timeseries()
     self.raw_acceleration_y = self._make_timeseries()
     self.raw_acceleration_z = self._make_timeseries()
+    self.raw_acceleration_magnitude = self._make_timeseries()
     self.raw_acceleration_axes = self._add_timeseries_axes(
         1, 'Raw Acceleration', 'm/s^2', [-20, 20],
         yticks=range(-15, 16, 5))
@@ -91,6 +92,8 @@
         self.raw_acceleration_axes, 'y', 'green')
     self.raw_acceleration_line_z = self._add_timeseries_line(
         self.raw_acceleration_axes, 'z', 'blue')
+    self.raw_acceleration_line_magnitude = self._add_timeseries_line(
+        self.raw_acceleration_axes, 'magnitude', 'orange', linewidth=2)
     self._add_timeseries_legend(self.raw_acceleration_axes)
 
     shared_axis = self.raw_acceleration_axes
@@ -98,7 +101,7 @@
     self.filtered_acceleration_x = self._make_timeseries()
     self.filtered_acceleration_y = self._make_timeseries()
     self.filtered_acceleration_z = self._make_timeseries()
-    self.magnitude = self._make_timeseries()
+    self.filtered_acceleration_magnitude = self._make_timeseries()
     self.filtered_acceleration_axes = self._add_timeseries_axes(
         2, 'Filtered Acceleration', 'm/s^2', [-20, 20],
         sharex=shared_axis,
@@ -109,7 +112,7 @@
         self.filtered_acceleration_axes, 'y', 'green')
     self.filtered_acceleration_line_z = self._add_timeseries_line(
         self.filtered_acceleration_axes, 'z', 'blue')
-    self.magnitude_line = self._add_timeseries_line(
+    self.filtered_acceleration_line_magnitude = self._add_timeseries_line(
         self.filtered_acceleration_axes, 'magnitude', 'orange', linewidth=2)
     self._add_timeseries_legend(self.filtered_acceleration_axes)
 
@@ -133,32 +136,46 @@
 
     self.current_rotation = self._make_timeseries()
     self.proposed_rotation = self._make_timeseries()
-    self.proposal_rotation = self._make_timeseries()
+    self.predicted_rotation = self._make_timeseries()
     self.orientation_axes = self._add_timeseries_axes(
-        5, 'Current / Proposed Orientation and Confidence', 'rotation', [-1, 4],
+        5, 'Current / Proposed Orientation', 'rotation', [-1, 4],
         sharex=shared_axis,
         yticks=range(0, 4))
     self.current_rotation_line = self._add_timeseries_line(
         self.orientation_axes, 'current', 'black', linewidth=2)
-    self.proposal_rotation_line = self._add_timeseries_line(
-        self.orientation_axes, 'proposal', 'purple', linewidth=3)
+    self.predicted_rotation_line = self._add_timeseries_line(
+        self.orientation_axes, 'predicted', 'purple', linewidth=3)
     self.proposed_rotation_line = self._add_timeseries_line(
         self.orientation_axes, 'proposed', 'green', linewidth=3)
     self._add_timeseries_legend(self.orientation_axes)
 
-    self.proposal_confidence = [[self._make_timeseries(), self._make_timeseries()]
-      for i in range(0, 4)]
-    self.proposal_confidence_polys = []
+    self.time_until_settled = self._make_timeseries()
+    self.time_until_flat_delay_expired = self._make_timeseries()
+    self.time_until_swing_delay_expired = self._make_timeseries()
+    self.stability_axes = self._add_timeseries_axes(
+        6, 'Proposal Stability', 'ms', [-10, 600],
+        sharex=shared_axis,
+        yticks=range(0, 600, 100))
+    self.time_until_settled_line = self._add_timeseries_line(
+        self.stability_axes, 'time until settled', 'black', linewidth=2)
+    self.time_until_flat_delay_expired_line = self._add_timeseries_line(
+        self.stability_axes, 'time until flat delay expired', 'green')
+    self.time_until_swing_delay_expired_line = self._add_timeseries_line(
+        self.stability_axes, 'time until swing delay expired', 'blue')
+    self._add_timeseries_legend(self.stability_axes)
 
     self.sample_latency = self._make_timeseries()
     self.sample_latency_axes = self._add_timeseries_axes(
-        6, 'Accelerometer Sampling Latency', 'ms', [-10, 500],
+        7, 'Accelerometer Sampling Latency', 'ms', [-10, 500],
         sharex=shared_axis,
         yticks=range(0, 500, 100))
     self.sample_latency_line = self._add_timeseries_line(
         self.sample_latency_axes, 'latency', 'black')
     self._add_timeseries_legend(self.sample_latency_axes)
 
+    self.fig.canvas.mpl_connect('button_press_event', self._on_click)
+    self.paused = False
+
     self.timer = self.fig.canvas.new_timer(interval=100)
     self.timer.add_callback(lambda: self.update())
     self.timer.start()
@@ -166,13 +183,22 @@
     self.timebase = None
     self._reset_parse_state()
 
+  # Handle a click event to pause or restart the timer.
+  def _on_click(self, ev):
+    if not self.paused:
+      self.paused = True
+      self.timer.stop()
+    else:
+      self.paused = False
+      self.timer.start()
+
   # Initialize a time series.
   def _make_timeseries(self):
     return [[], []]
 
   # Add a subplot to the figure for a time series.
   def _add_timeseries_axes(self, index, title, ylabel, ylim, yticks, sharex=None):
-    num_graphs = 6
+    num_graphs = 7
     height = 0.9 / num_graphs
     top = 0.95 - height * index
     axes = self.fig.add_axes([0.1, top, 0.8, height],
@@ -214,16 +240,19 @@
     self.parse_raw_acceleration_x = None
     self.parse_raw_acceleration_y = None
     self.parse_raw_acceleration_z = None
+    self.parse_raw_acceleration_magnitude = None
     self.parse_filtered_acceleration_x = None
     self.parse_filtered_acceleration_y = None
     self.parse_filtered_acceleration_z = None
-    self.parse_magnitude = None
+    self.parse_filtered_acceleration_magnitude = None
     self.parse_tilt_angle = None
     self.parse_orientation_angle = None
     self.parse_current_rotation = None
     self.parse_proposed_rotation = None
-    self.parse_proposal_rotation = None
-    self.parse_proposal_confidence = None
+    self.parse_predicted_rotation = None
+    self.parse_time_until_settled = None
+    self.parse_time_until_flat_delay_expired = None
+    self.parse_time_until_swing_delay_expired = None
     self.parse_sample_latency = None
 
   # Update samples.
@@ -252,14 +281,13 @@
         self.parse_raw_acceleration_x = self._get_following_number(line, 'x=')
         self.parse_raw_acceleration_y = self._get_following_number(line, 'y=')
         self.parse_raw_acceleration_z = self._get_following_number(line, 'z=')
+        self.parse_raw_acceleration_magnitude = self._get_following_number(line, 'magnitude=')
 
       if line.find('Filtered acceleration vector:') != -1:
         self.parse_filtered_acceleration_x = self._get_following_number(line, 'x=')
         self.parse_filtered_acceleration_y = self._get_following_number(line, 'y=')
         self.parse_filtered_acceleration_z = self._get_following_number(line, 'z=')
-
-      if line.find('magnitude=') != -1:
-        self.parse_magnitude = self._get_following_number(line, 'magnitude=')
+        self.parse_filtered_acceleration_magnitude = self._get_following_number(line, 'magnitude=')
 
       if line.find('tiltAngle=') != -1:
         self.parse_tilt_angle = self._get_following_number(line, 'tiltAngle=')
@@ -270,17 +298,20 @@
       if line.find('Result:') != -1:
         self.parse_current_rotation = self._get_following_number(line, 'currentRotation=')
         self.parse_proposed_rotation = self._get_following_number(line, 'proposedRotation=')
-        self.parse_proposal_rotation = self._get_following_number(line, 'proposalRotation=')
-        self.parse_proposal_confidence = self._get_following_number(line, 'proposalConfidence=')
+        self.parse_predicted_rotation = self._get_following_number(line, 'predictedRotation=')
         self.parse_sample_latency = self._get_following_number(line, 'timeDeltaMS=')
+        self.parse_time_until_settled = self._get_following_number(line, 'timeUntilSettledMS=')
+        self.parse_time_until_flat_delay_expired = self._get_following_number(line, 'timeUntilFlatDelayExpiredMS=')
+        self.parse_time_until_swing_delay_expired = self._get_following_number(line, 'timeUntilSwingDelayExpiredMS=')
 
         self._append(self.raw_acceleration_x, timeindex, self.parse_raw_acceleration_x)
         self._append(self.raw_acceleration_y, timeindex, self.parse_raw_acceleration_y)
         self._append(self.raw_acceleration_z, timeindex, self.parse_raw_acceleration_z)
+        self._append(self.raw_acceleration_magnitude, timeindex, self.parse_raw_acceleration_magnitude)
         self._append(self.filtered_acceleration_x, timeindex, self.parse_filtered_acceleration_x)
         self._append(self.filtered_acceleration_y, timeindex, self.parse_filtered_acceleration_y)
         self._append(self.filtered_acceleration_z, timeindex, self.parse_filtered_acceleration_z)
-        self._append(self.magnitude, timeindex, self.parse_magnitude)
+        self._append(self.filtered_acceleration_magnitude, timeindex, self.parse_filtered_acceleration_magnitude)
         self._append(self.tilt_angle, timeindex, self.parse_tilt_angle)
         self._append(self.orientation_angle, timeindex, self.parse_orientation_angle)
         self._append(self.current_rotation, timeindex, self.parse_current_rotation)
@@ -288,17 +319,13 @@
           self._append(self.proposed_rotation, timeindex, self.parse_proposed_rotation)
         else:
           self._append(self.proposed_rotation, timeindex, None)
-        if self.parse_proposal_rotation >= 0:
-          self._append(self.proposal_rotation, timeindex, self.parse_proposal_rotation)
+        if self.parse_predicted_rotation >= 0:
+          self._append(self.predicted_rotation, timeindex, self.parse_predicted_rotation)
         else:
-          self._append(self.proposal_rotation, timeindex, None)
-        for i in range(0, 4):
-          self._append(self.proposal_confidence[i][0], timeindex, i)
-          if i == self.parse_proposal_rotation:
-            self._append(self.proposal_confidence[i][1], timeindex,
-              i + self.parse_proposal_confidence)
-          else:
-            self._append(self.proposal_confidence[i][1], timeindex, i)
+          self._append(self.predicted_rotation, timeindex, None)
+        self._append(self.time_until_settled, timeindex, self.parse_time_until_settled)
+        self._append(self.time_until_flat_delay_expired, timeindex, self.parse_time_until_flat_delay_expired)
+        self._append(self.time_until_swing_delay_expired, timeindex, self.parse_time_until_swing_delay_expired)
         self._append(self.sample_latency, timeindex, self.parse_sample_latency)
         self._reset_parse_state()
 
@@ -309,45 +336,40 @@
       self._scroll(self.raw_acceleration_x, bottom)
       self._scroll(self.raw_acceleration_y, bottom)
       self._scroll(self.raw_acceleration_z, bottom)
+      self._scroll(self.raw_acceleration_magnitude, bottom)
       self._scroll(self.filtered_acceleration_x, bottom)
       self._scroll(self.filtered_acceleration_y, bottom)
       self._scroll(self.filtered_acceleration_z, bottom)
-      self._scroll(self.magnitude, bottom)
+      self._scroll(self.filtered_acceleration_magnitude, bottom)
       self._scroll(self.tilt_angle, bottom)
       self._scroll(self.orientation_angle, bottom)
       self._scroll(self.current_rotation, bottom)
       self._scroll(self.proposed_rotation, bottom)
-      self._scroll(self.proposal_rotation, bottom)
-      for i in range(0, 4):
-        self._scroll(self.proposal_confidence[i][0], bottom)
-        self._scroll(self.proposal_confidence[i][1], bottom)
+      self._scroll(self.predicted_rotation, bottom)
+      self._scroll(self.time_until_settled, bottom)
+      self._scroll(self.time_until_flat_delay_expired, bottom)
+      self._scroll(self.time_until_swing_delay_expired, bottom)
       self._scroll(self.sample_latency, bottom)
 
     # Redraw the plots.
     self.raw_acceleration_line_x.set_data(self.raw_acceleration_x)
     self.raw_acceleration_line_y.set_data(self.raw_acceleration_y)
     self.raw_acceleration_line_z.set_data(self.raw_acceleration_z)
+    self.raw_acceleration_line_magnitude.set_data(self.raw_acceleration_magnitude)
     self.filtered_acceleration_line_x.set_data(self.filtered_acceleration_x)
     self.filtered_acceleration_line_y.set_data(self.filtered_acceleration_y)
     self.filtered_acceleration_line_z.set_data(self.filtered_acceleration_z)
-    self.magnitude_line.set_data(self.magnitude)
+    self.filtered_acceleration_line_magnitude.set_data(self.filtered_acceleration_magnitude)
     self.tilt_angle_line.set_data(self.tilt_angle)
     self.orientation_angle_line.set_data(self.orientation_angle)
     self.current_rotation_line.set_data(self.current_rotation)
     self.proposed_rotation_line.set_data(self.proposed_rotation)
-    self.proposal_rotation_line.set_data(self.proposal_rotation)
+    self.predicted_rotation_line.set_data(self.predicted_rotation)
+    self.time_until_settled_line.set_data(self.time_until_settled)
+    self.time_until_flat_delay_expired_line.set_data(self.time_until_flat_delay_expired)
+    self.time_until_swing_delay_expired_line.set_data(self.time_until_swing_delay_expired)
     self.sample_latency_line.set_data(self.sample_latency)
 
-    for poly in self.proposal_confidence_polys:
-      poly.remove()
-    self.proposal_confidence_polys = []
-    for i in range(0, 4):
-      self.proposal_confidence_polys.append(self.orientation_axes.fill_between(
-        self.proposal_confidence[i][0][0],
-        self.proposal_confidence[i][0][1],
-        self.proposal_confidence[i][1][1],
-        facecolor='goldenrod', edgecolor='goldenrod'))
-
     self.fig.canvas.draw_idle()
 
   # Scroll a time series.