diff --git a/.hgignore b/.hgignore
index eeb6d4499676516aae36c0c289854ae7165a8817..8e02212e798d361189954a62ba75b96056736e52 100644
--- a/.hgignore
+++ b/.hgignore
@@ -43,3 +43,4 @@ tarfile_tmp
 ^indra/web/dataservice/locale.*
 ^indra/web/dataservice/lib/shared/vault.*
 ^indra/web/dataservice/vendor.*
+glob:indra/newview/dbghelp.dll
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 6556aa33a49ed986e3e03adcf7a1612592ea8827..26802bbd1c1d85451ae0742a7f93f00c6c03a981 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -1129,6 +1129,11 @@ void LLPluginClassMedia::setVolume(float volume)
 	}
 }
 
+float LLPluginClassMedia::getVolume()
+{
+	return mRequestedVolume;
+}
+
 void LLPluginClassMedia::initializeUrlHistory(const LLSD& url_history)
 {
 	// Send URL history to plugin
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 603817b7d092024d8828d2d694c7f71087fd5f4f..4f9763474e14b3f2fa00e2bca1900e80c49a07e6 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -227,6 +227,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	void seek(float time);
 	void setLoop(bool loop);
 	void setVolume(float volume);
+	float getVolume();
 	
 	F64 getCurrentTime(void) const { return mCurrentTime; };
 	F64 getDuration(void) const { return mDuration; };
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index f3b4c6bdc63d4ae70ed81b32d492c8e82af0948e..39f9438fb3de59279cbf173ed2b5ec650cd074e7 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -55,6 +55,11 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner)
 	mBoundPort = 0;
 	mState = STATE_UNINITIALIZED;
 	mDisableTimeout = false;
+
+	// initialize timer - heartbeat test (mHeartbeat.hasExpired()) 
+	// can sometimes return true immediately otherwise and plugins 
+	// fail immediately because it looks like 
+	mHeartbeat.setTimerExpirySec(PLUGIN_LOCKED_UP_SECONDS);
 }
 
 LLPluginProcessParent::~LLPluginProcessParent()
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index d8606c6889b283b786d24bf04a863b995290960f..5e17372fe948edec09a23f15d44206fdfee0e3ad 100644
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
@@ -432,7 +432,7 @@ void LLScrollContainer::draw()
 
 			LLLocalClipRect clip(LLRect(mInnerRect.mLeft, 
 					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) + visible_height,
-					visible_width,
+					mInnerRect.mRight - (show_v_scrollbar ? scrollbar_size: 0),
 					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0)
 					));
 			drawChild(mScrolledView);
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 22cce755b0d36a5d29da071c038b11ae299e1486..0add3fb500a00043c945e674f0a33ba717ef6e51 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -232,7 +232,7 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p)
 
 	createDefaultSegment();
 
-	updateTextRect();
+	updateRects();
 }
 
 LLTextBase::~LLTextBase()
@@ -538,10 +538,6 @@ void LLTextBase::drawText()
 			next_start = getLineStart(cur_line + 1);
 			line_end = next_start;
 		}
-		if ( text[line_end-1] == '\n' )
-		{
-			--line_end;
-		}
 
 		LLRect text_rect(line.mRect.mLeft + mTextRect.mLeft - scrolled_view_rect.mLeft,
 						line.mRect.mTop - scrolled_view_rect.mBottom + mTextRect.mBottom,
@@ -944,7 +940,7 @@ void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)
 
 	// do this first after reshape, because other things depend on
 	// up-to-date mTextRect
-	updateTextRect();
+	updateRects();
 	
 	needsReflow();
 }
@@ -957,10 +953,20 @@ void LLTextBase::draw()
 	// then update scroll position, as cursor may have moved
 	updateScrollFromCursor();
 
+	LLRect doc_rect;
+	if (mScroller)
+	{
+		mScroller->localRectToOtherView(mScroller->getContentWindowRect(), &doc_rect, this);
+	}
+	else
+	{
+		doc_rect = getLocalRect();
+	}
+
 	if (mBGVisible)
 	{
 		// clip background rect against extents, if we support scrolling
-		LLLocalClipRect clip(getLocalRect(), mScroller != NULL);
+		LLLocalClipRect clip(doc_rect, mScroller != NULL);
 
 		LLColor4 bg_color = mReadOnly 
 							? mReadOnlyBgColor.get()
@@ -975,7 +981,7 @@ void LLTextBase::draw()
 
 	{
 		// only clip if we support scrolling (mScroller != NULL)
-		LLLocalClipRect clip(mTextRect, mScroller != NULL);
+		LLLocalClipRect clip(doc_rect, mScroller != NULL);
 		drawSelectionBackground();
 		drawText();
 		drawCursor();
@@ -1154,60 +1160,8 @@ void LLTextBase::reflow(S32 start_index)
 			}
 		}
 
-		if (mLineInfoList.empty()) 
-		{
-			mContentsRect = LLRect(0, mVPad, mHPad, 0);
-		}
-		else
-		{
-
-			mContentsRect = mLineInfoList.begin()->mRect;
-			for (line_list_t::const_iterator line_iter = ++mLineInfoList.begin();
-				line_iter != mLineInfoList.end();
-				++line_iter)
-			{
-				mContentsRect.unionWith(line_iter->mRect);
-			}
-
-			mContentsRect.mRight += mHPad;
-			mContentsRect.mTop += mVPad;
-			// get around rounding errors when clipping text against rectangle
-			mContentsRect.stretch(1);
-		}
-
-		// change mDocumentView size to accomodate reflowed text
-		LLRect document_rect;
-		if (mScroller)
-		{
-			// document is size of scroller or size of text contents, whichever is larger
-			document_rect.setOriginAndSize(0, 0, 
-										mScroller->getContentWindowRect().getWidth(), 
-										llmax(mScroller->getContentWindowRect().getHeight(), mContentsRect.getHeight()));
-		}
-		else
-		{
-			// document size is just extents of reflowed text, reset to origin 0,0
-			document_rect.set(0, 
-							getLocalRect().getHeight(), 
-							getLocalRect().getWidth(), 
-							llmin(0, getLocalRect().getHeight() - mContentsRect.getHeight()));
-		}
-		mDocumentView->setShape(document_rect);
-
-		// after making document big enough to hold all the text, move the text to fit in the document
-		if (!mLineInfoList.empty())
-		{
-			S32 delta_pos = mDocumentView->getRect().getHeight() - mLineInfoList.begin()->mRect.mTop - mVPad;
-			// move line segments to fit new document rect
-			for (line_list_t::iterator it = mLineInfoList.begin(); it != mLineInfoList.end(); ++it)
-			{
-				it->mRect.translate(0, delta_pos);
-			}
-			mContentsRect.translate(0, delta_pos);
-		}
-
 		// calculate visible region for diplaying text
-		updateTextRect();
+		updateRects();
 
 		for (segment_set_t::iterator segment_it = mSegments.begin();
 			segment_it != mSegments.end();
@@ -2075,8 +2029,30 @@ S32 LLTextBase::getEditableIndex(S32 index, bool increasing_direction)
 	}
 }
 
-void LLTextBase::updateTextRect()
+void LLTextBase::updateRects()
 {
+	if (mLineInfoList.empty()) 
+	{
+		mContentsRect = LLRect(0, mVPad, mHPad, 0);
+	}
+	else
+	{
+
+		mContentsRect = mLineInfoList.begin()->mRect;
+		for (line_list_t::const_iterator line_iter = ++mLineInfoList.begin();
+			line_iter != mLineInfoList.end();
+			++line_iter)
+		{
+			mContentsRect.unionWith(line_iter->mRect);
+		}
+
+		mContentsRect.mRight += mHPad;
+		mContentsRect.mTop += mVPad;
+		// get around rounding errors when clipping text against rectangle
+		mContentsRect.stretch(1);
+	}
+
+
 	LLRect old_text_rect = mTextRect;
 	mTextRect = mScroller ? mScroller->getContentWindowRect() : getLocalRect();
 	//FIXME: replace border with image?
@@ -2090,6 +2066,37 @@ void LLTextBase::updateTextRect()
 	{
 		needsReflow();
 	}
+
+	// change document rect size too
+	LLRect document_rect;
+	if (mScroller)
+	{
+		// document is size of scroller or size of text contents, whichever is larger
+		document_rect.setOriginAndSize(0, 0, 
+									mScroller->getContentWindowRect().getWidth(), 
+									llmax(mScroller->getContentWindowRect().getHeight(), mContentsRect.getHeight()));
+	}
+	else
+	{
+		// document size is just extents of reflowed text, reset to origin 0,0
+		document_rect.set(0, 
+						getLocalRect().getHeight(), 
+						getLocalRect().getWidth(), 
+						llmin(0, getLocalRect().getHeight() - mContentsRect.getHeight()));
+	}
+	mDocumentView->setShape(document_rect);
+
+	// after making document big enough to hold all the text, move the text to fit in the document
+	if (!mLineInfoList.empty())
+	{
+		S32 delta_pos = mDocumentView->getRect().getHeight() - mLineInfoList.begin()->mRect.mTop - mVPad;
+		// move line segments to fit new document rect
+		for (line_list_t::iterator it = mLineInfoList.begin(); it != mLineInfoList.end(); ++it)
+		{
+			it->mRect.translate(0, delta_pos);
+		}
+		mContentsRect.translate(0, delta_pos);
+	}
 }
 
 
@@ -2218,6 +2225,11 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele
 
 	const LLWString &text = mEditor.getWText();
 
+	if ( text[seg_end-1] == '\n' )
+	{
+		--seg_end;
+	}
+
 	F32 right_x = rect.mLeft;
 	if (!mStyle->isVisible())
 	{
@@ -2362,16 +2374,7 @@ void LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
 {
 	LLWString text = mEditor.getWText();
 
-	// look for any printable character, then return the font height
-	height = 0;
-	for (S32 index = mStart + first_char; index < mStart + first_char + num_chars; ++index)
-	{
-		if (text[index] != '\n')
-		{
-			height = mFontHeight;
-			break;
-		}
-	}
+	height = mFontHeight;
 	width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars);
 }
 
@@ -2393,7 +2396,11 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin
 	S32 last_char = mStart + segment_offset;
 	for (; last_char != mEnd; ++last_char)
 	{
-		if (text[last_char] == '\n') break;
+		if (text[last_char] == '\n') 
+		{
+			last_char++;
+			break;
+		}
 	}
 
 	// set max characters to length of segment, or to first newline
@@ -2416,10 +2423,6 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin
 		// include terminating NULL
 		num_chars++;
 	}
-	else if (text[mStart + segment_offset + num_chars] == '\n')
-	{
-		num_chars++;
-	}
 	return num_chars;
 }
 
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index f0b88784915fe97a57d4df61ecabbd7927e2242a..d0787f001ebbaf66b2797abb2e7bc3994624c65e 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -294,7 +294,7 @@ class LLTextBase
 	void 							endSelection();
 
 	// misc
-	void							updateTextRect();
+	void							updateRects();
 	void							needsReflow() { mReflowNeeded = TRUE; }
 	void							needsScroll() { mScrollNeeded = TRUE; }
 	void							replaceUrlLabel(const std::string &url, const std::string &label);
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index d507cf7ce441b23714e53445a725eb9efc891004..570ca4b998ce91cf8b17f19237652736c24dfc6b 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -63,6 +63,7 @@
 #include "llpanel.h"
 #include "llurlregistry.h"
 #include "lltooltip.h"
+#include "llmenugl.h"
 
 #include <queue>
 #include "llcombobox.h"
@@ -252,7 +253,8 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
 	mHandleEditKeysDirectly( p.handle_edit_keys_directly ),
 	mMouseDownX(0),
 	mMouseDownY(0),
-	mTabsToNextField(p.ignore_tab)
+	mTabsToNextField(p.ignore_tab),
+	mContextMenu(NULL)
 {
 	mDefaultFont = p.font;
 
@@ -273,7 +275,7 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
 	if (mShowLineNumbers)
 	{
 		mHPad += UI_TEXTEDITOR_LINE_NUMBER_MARGIN;
-		updateTextRect();
+		updateRects();
 	}
 }
 
@@ -301,6 +303,8 @@ LLTextEditor::~LLTextEditor()
 
 	// Scrollbar is deleted by LLView
 	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer());
+
+	delete mContextMenu;
 }
 
 ////////////////////////////////////////////////////////////
@@ -702,6 +706,19 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 	return handled;
 }
 
+BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+	BOOL handled = LLTextBase::handleRightMouseDown(x, y, mask);
+	if (!handled && hasTabStop())
+	{
+		setFocus( TRUE );
+		showContextMenu(x, y);
+		handled = TRUE;
+	}
+	return handled;
+}
+
+
 
 BOOL LLTextEditor::handleMiddleMouseDown(S32 x, S32 y, MASK mask)
 {
@@ -736,7 +753,6 @@ BOOL LLTextEditor::handleHover(S32 x, S32 y, MASK mask)
 			setCursorAtLocalPos( clamped_x, clamped_y, true );
 			mSelectionEnd = mCursorPos;
 		}
-
 		lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (active)" << llendl;		
 		getWindow()->setCursor(UI_CURSOR_IBEAM);
 		handled = TRUE;
@@ -1991,6 +2007,21 @@ void LLTextEditor::setEnabled(BOOL enabled)
 	}
 }
 
+void LLTextEditor::showContextMenu(S32 x, S32 y)
+{
+	if (!mContextMenu)
+	{
+		mContextMenu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>("menu_text_editor.xml", 
+																				LLMenuGL::sMenuContainer, 
+																				LLMenuHolderGL::child_registry_t::instance());
+	}
+
+	S32 screen_x, screen_y;
+	localPointToScreen(x, y, &screen_x, &screen_y);
+	mContextMenu->show(screen_x, screen_y);
+}
+
+
 void LLTextEditor::drawPreeditMarker()
 {
 	static LLUICachedControl<F32> preedit_marker_brightness ("UIPreeditMarkerBrightness", 0);
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 481a4d1a78d1fe3bc7c4028958a72216528fbe37..4847f4d117abc8a2e731750122426a0694988e72 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -99,6 +99,7 @@ class LLTextEditor :
 	// mousehandler overrides
 	virtual BOOL	handleMouseDown(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
+	virtual BOOL	handleRightMouseDown(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleHover(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleDoubleClick(S32 x, S32 y, MASK mask );
 	virtual BOOL	handleMiddleMouseDown(S32 x,S32 y,MASK mask);
@@ -201,6 +202,7 @@ class LLTextEditor :
 	void getSelectedSegments(segment_vec_t& segments) const;
 
 protected:
+	void			showContextMenu(S32 x, S32 y);
 	void			drawPreeditMarker();
 
 	void 			assignEmbedded(const std::string &s);
@@ -328,6 +330,8 @@ class LLTextEditor :
 	LLCoordGL		mLastIMEPosition;		// Last position of the IME editor
 
 	keystroke_signal_t mKeystrokeSignal;
+
+	LLContextMenu* mContextMenu;
 }; // end class LLTextEditor
 
 
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
index 7100d03f051f5c5507b7e23e1c7957b46c06644b..c9ee1c8ac777028c228a8a8d65afe511028a3f05 100644
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
@@ -79,6 +79,7 @@ class MediaPluginQuickTime : public MediaPluginBase
 	const int mMinHeight;
 	const int mMaxHeight;
 	F64 mPlayRate;
+	std::string mNavigateURL;
 
 	enum ECommand {
 		COMMAND_NONE,
@@ -179,6 +180,11 @@ class MediaPluginQuickTime : public MediaPluginBase
 			setStatus(STATUS_ERROR);
 			return;
 		};
+		
+		mNavigateURL = url;
+		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin");
+		message.setValue("uri", mNavigateURL);
+		sendMessage(message);
 
 		// do pre-roll actions (typically fired for streaming movies but not always)
 		PrePrerollMovie( mMovieHandle, 0, getPlayRate(), moviePrePrerollCompleteCallback, ( void * )this );
@@ -389,11 +395,18 @@ class MediaPluginQuickTime : public MediaPluginBase
 
 	static void moviePrePrerollCompleteCallback( Movie movie, OSErr preroll_err, void *ref )
 	{
-		//MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref;
+		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref;
 
 		// TODO:
 		//LLMediaEvent event( self );
 		//self->mEventEmitter.update( &LLMediaObserver::onMediaPreroll, event );
+		
+		// Send a "navigate complete" event.
+		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete");
+		message.setValue("uri", self->mNavigateURL);
+		message.setValueS32("result_code", 200);
+		message.setValue("result_string", "OK");
+		self->sendMessage(message);
 	};
 
 
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index e42f9739f4fecdcae84943d9e4bd56aa543c6206..7c9e27a7608f52e40786b00dbd2859f88e78f716 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -83,6 +83,7 @@ class MediaPluginWebKit :
 	bool	mCanPaste;
 	int mLastMouseX;
 	int mLastMouseY;
+	bool mFirstFocus;
 	
 	////////////////////////////////////////////////////////////////////////////////
 	//
@@ -495,6 +496,7 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
 	mCanPaste = false;
 	mLastMouseX = 0;
 	mLastMouseY = 0;
+	mFirstFocus = true;
 }
 
 MediaPluginWebKit::~MediaPluginWebKit()
@@ -769,6 +771,15 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			{
 				bool val = message_in.getValueBoolean("focused");
 				LLQtWebKit::getInstance()->focusBrowser( mBrowserWindowId, val );
+				
+				if(mFirstFocus && val)
+				{
+					// On the first focus, post a tab key event.  This fixes a problem with initial focus.
+					std::string empty;
+					keyEvent(LLQtWebKit::KE_KEY_DOWN, KEY_TAB, decodeModifiers(empty));
+					keyEvent(LLQtWebKit::KE_KEY_UP, KEY_TAB, decodeModifiers(empty));
+					mFirstFocus = false;
+				}
 			}
 			else if(message_name == "clear_cache")
 			{
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c34b2798d159c464b5bc7d01443eb07de1e1d0b9..63a4435408df2312518efba1c18ff4c10a9e39d2 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7351,17 +7351,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>ScriptErrorsAsChat</key>
-    <map>
-      <key>Comment</key>
-      <string>Display script errors and warning in chat history</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>ScriptHelpFollowsCursor</key>
     <map>
       <key>Comment</key>
@@ -7675,6 +7664,28 @@
       <string>Boolean</string>
       <key>Value</key>
       <integer>1</integer>   
+    </map>
+	<key>ShowScriptErrors</key>
+    <map>
+      <key>Comment</key>
+      <string>Show script errors</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
+	<key>ShowScriptErrorsLocation</key>
+    <map>
+      <key>Comment</key>
+      <string>Show script error in chat or window</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>0</integer>
     </map>
     <key>ShowSnapshotButton</key>                
     <map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 923a66ee8e344f7ca26d6460670430be56d0782e..e184d99ffc55fc1c8fa88a1cae13c944bc8b759a 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -227,7 +227,6 @@ const F32 DEFAULT_AFK_TIMEOUT = 5.f * 60.f; // time with no input before user fl
 F32 gSimLastTime; // Used in LLAppViewer::init and send_stats()
 F32 gSimFrames;
 
-BOOL gAllowTapTapHoldRun = TRUE;
 BOOL gShowObjectUpdates = FALSE;
 BOOL gUseQuickTime = TRUE;
 
@@ -421,7 +420,6 @@ static void settings_to_globals()
 	gAgent.setHideGroupTitle(gSavedSettings.getBOOL("RenderHideGroupTitle"));
 
 	gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc");
-	gAllowTapTapHoldRun = gSavedSettings.getBOOL("AllowTapTapHoldRun");
 	gShowObjectUpdates = gSavedSettings.getBOOL("ShowObjectUpdates");
 	gMapScale = gSavedSettings.getF32("MapScale");
 
@@ -1350,7 +1348,11 @@ bool LLAppViewer::cleanup()
 	// Destroy the UI
 	if( gViewerWindow)
 		gViewerWindow->shutdownViews();
-
+	
+	// Cleanup Inventory after the UI since it will delete any remaining observers
+	// (Deleted observers should have already removed themselves)
+	gInventory.cleanupInventory();
+	
 	// Clean up selection managers after UI is destroyed, as UI may be observing them.
 	// Clean up before GL is shut down because we might be holding on to objects with texture references
 	LLSelectMgr::cleanupGlobals();
@@ -2400,7 +2402,6 @@ void LLAppViewer::cleanupSavedSettings()
 
 	gSavedSettings.setBOOL("DebugWindowProc", gDebugWindowProc);
 		
-	gSavedSettings.setBOOL("AllowTapTapHoldRun", gAllowTapTapHoldRun);
 	gSavedSettings.setBOOL("ShowObjectUpdates", gShowObjectUpdates);
 	
 	if (!gNoRender)
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index f95d7cb412c4b687e6ab36d37e6e4bbb5ba9ef11..d970aa6ae1429254c62629df94871b6c6c44b285 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -282,8 +282,6 @@ const S32 AGENT_UPDATES_PER_SECOND  = 10;
 // "// llstartup" indicates that llstartup is the only client for this global.
 
 extern LLSD gDebugInfo;
-
-extern BOOL	gAllowTapTapHoldRun;
 extern BOOL	gShowObjectUpdates;
 
 typedef enum 
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index ebf46a6e3ffb339c07301d9ff9c60e83b22d5fa6..94058365beca43edc88d4a3d5a17232fa1f9020c 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -101,12 +101,12 @@ void LLChatHistory::appendWidgetMessage(const LLUUID& avatar_id, std::string& fr
 	if (mLastFromName == from)
 	{
 		view = getSeparator();
-		view_text = " ";
+		view_text = "\n";
 	}
 	else
 	{
 		view = getHeader(avatar_id, from, time);
-		view_text = "\n" + from + MESSAGE_USERNAME_DATE_SEPARATOR + time;
+		view_text = from + MESSAGE_USERNAME_DATE_SEPARATOR + time + '\n';
 	}
 	//Prepare the rect for the view
 	LLRect target_rect = getDocumentView()->getRect();
@@ -118,7 +118,8 @@ void LLChatHistory::appendWidgetMessage(const LLUUID& avatar_id, std::string& fr
 	appendWidget(view, view_text, FALSE, TRUE, mLeftWidgetPad, 0);
 
 	//Append the text message
-	appendText(message, TRUE, style_params);
+	message += '\n';
+	appendText(message, FALSE, style_params);
 
 	mLastFromName = from;
 	blockUndo();
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index 976f02eeb7f8262b90ebbab32362a1ad59bcf876..d8c34581d5db20381eb4b087981a81d0805f03ec 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -442,6 +442,7 @@ void LLRenderPass::renderTexture(U32 type, U32 mask)
 
 void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture)
 {
+	llpushcallstacks ;
 	for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i)	
 	{
 		LLDrawInfo* pparams = *i;
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 4246cbc27f24d4322154878239318554513e0e96..09b3ce1e863b4acc51ddf94b35ec3845875d4b48 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -856,6 +856,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 								const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,
 								const U16 &index_offset)
 {
+	llpushcallstacks ;
 	const LLVolumeFace &vf = volume.getVolumeFace(f);
 	S32 num_vertices = (S32)vf.mVertices.size();
 	S32 num_indices = (S32)vf.mIndices.size();
@@ -864,7 +865,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	{
 		if (num_indices + (S32) mIndicesIndex > mVertexBuffer->getNumIndices())
 		{
-			llwarns << "Index buffer overflow!" << llendl;
+			llwarns	<< "Index buffer overflow!" << llendl;
+			llwarns << "Indices Count: " << mIndicesCount
+					<< " VF Num Indices: " << num_indices
+					<< " Indices Index: " << mIndicesIndex
+					<< " VB Num Indices: " << mVertexBuffer->getNumIndices() << llendl;
+			llwarns	<< "Last Indices Count: " << mLastIndicesCount
+					<< " Last Indices Index: " << mLastIndicesIndex
+					<< " Face Index: " << f
+					<< " Pool Type: " << mPoolType << llendl;
 			return FALSE;
 		}
 
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 6d2e9593520a836bc5e80f9024f7bd0c68ecb47c..86abebe7cecba1fdbe9461f26f9c421ca7f21f4d 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -204,12 +204,14 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
 
 	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
 	{
-		LLFloaterScriptDebug::addScriptLine(chat.mText,
-											chat.mFromName, 
-											color, 
-											chat.mFromID);
-		if (!gSavedSettings.getBOOL("ScriptErrorsAsChat"))
+		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
+			return;
+		if (gSavedSettings.getS32("ShowScriptErrorsLocation") == 1)
 		{
+			LLFloaterScriptDebug::addScriptLine(chat.mText,
+												chat.mFromName, 
+												color, 
+												chat.mFromID);
 			return;
 		}
 	}
@@ -315,9 +317,9 @@ void LLFloaterChat::addChat(const LLChat& chat,
 {
 	LLColor4 text_color = get_text_color(chat);
 
-	BOOL invisible_script_debug_chat = 
-			chat.mChatType == CHAT_TYPE_DEBUG_MSG
-			&& !gSavedSettings.getBOOL("ScriptErrorsAsChat");
+	BOOL invisible_script_debug_chat = ((gSavedSettings.getBOOL("ShowScriptErrors") == FALSE) ||
+			(chat.mChatType == CHAT_TYPE_DEBUG_MSG
+			&& (gSavedSettings.getS32("ShowScriptErrorsLocation") == 1)));
 
 	if (!invisible_script_debug_chat 
 		&& !chat.mMuted 
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index dbee9ea30995885d233eff5cb2c541a905cdb492..8b3391726a7fab80e84b21a74ed38d2f7f666027 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -843,10 +843,7 @@ void LLFloaterPreference::refreshEnabledState()
 	bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
 	getChild<LLCheckBoxCtrl>("BumpShiny")->setEnabled(bumpshiny ? TRUE : FALSE);
 	
-	for (S32 i = 0; i < radio_reflection_detail->getItemCount(); ++i)
-	{
-		radio_reflection_detail->setIndexEnabled(i, ctrl_reflections->get() && reflections);
-	}
+	radio_reflection_detail->setEnabled(ctrl_reflections->get() && reflections);
 	
 	// Avatar Mode
 	// Enable Avatar Shaders
@@ -880,20 +877,10 @@ void LLFloaterPreference::refreshEnabledState()
 	{
 		mRadioTerrainDetail->setValue(1);
 		mRadioTerrainDetail->setEnabled(FALSE);
-		for (S32 i = 0; i < mRadioTerrainDetail->getItemCount(); ++i)
-		{
-			mRadioTerrainDetail->setIndexEnabled(i, FALSE);
-		}
 	}
 	else
 	{
-		mRadioTerrainDetail->setEnabled(TRUE);
-		
-		for (S32 i = 0; i < mRadioTerrainDetail->getItemCount(); ++i)
-		{
-			mRadioTerrainDetail->setIndexEnabled(i, TRUE);
-		}
-		
+		mRadioTerrainDetail->setEnabled(TRUE);		
 	}
 	
 	// WindLight
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 92980c22c7cee6c09ade8e4e2db5599828c53676..3bec6f9e73494af04c8c2c994f2977e5821fe50c 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -1141,7 +1141,7 @@ void LLFloaterTools::getMediaState()
 		childSetEnabled( "edit_media", bool_has_media & editable );
 		childSetEnabled( "delete_media", bool_has_media & editable );
 		childSetEnabled( "add_media", ( ! bool_has_media ) & editable );
-		media_info->setEnabled(bool_has_media & editable);
+		media_info->setEnabled(false);
 			// TODO: display a list of all media on the face - use 'identical' flag
 	}
 	else // not all face has media but at least one does.
@@ -1165,7 +1165,7 @@ void LLFloaterTools::getMediaState()
 			
 		}
 		
-		media_info->setEnabled(TRUE);
+		media_info->setEnabled(false);
 		media_info->setTentative(true);
 		childSetEnabled("media_tex",  TRUE);
 		childSetEnabled( "edit_media", TRUE);
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index d5a527773cc04567c2b34fd7986025a96486b21e..1d7cbde0d5655932477a1df6107a255fb4a2c956 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -175,13 +175,22 @@ LLInventoryModel::LLInventoryModel()
 
 // Destroys the object
 LLInventoryModel::~LLInventoryModel()
+{
+	cleanupInventory();
+}
+
+void LLInventoryModel::cleanupInventory()
 {
 	empty();
-	for (observer_list_t::iterator iter = mObservers.begin();
-		 iter != mObservers.end(); ++iter)
+	// Deleting one observer might erase others from the list, so always pop off the front
+	while (!mObservers.empty())
 	{
-		delete *iter;
+		observer_list_t::iterator iter = mObservers.begin();
+		LLInventoryObserver* observer = *iter;
+		mObservers.erase(iter);
+		delete observer;
 	}
+	mObservers.clear();
 }
 
 // This is a convenience function to check if one object has a parent
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index 7d4f3372e979e5ea8b4998f736a197d05aa0ce45..d51460b374c67aea7144e8b287fa63c596189cc9 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -112,7 +112,9 @@ class LLInventoryModel
 	// construction & destruction
 	LLInventoryModel();
 	~LLInventoryModel();
-
+	
+	void cleanupInventory();
+	
 	class fetchInventoryResponder : public LLHTTPClient::Responder
 	{
 	public:
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index 2e8084759a2955ce74efd0acb6e07b6dbb5d8432..83e694951b56a0ba08a9cc63027f53bf517dc335 100644
--- a/indra/newview/lllandmarklist.cpp
+++ b/indra/newview/lllandmarklist.cpp
@@ -37,6 +37,7 @@
 #include "message.h"
 #include "llassetstorage.h"
 
+#include "llappviewer.h"
 #include "llagent.h"
 #include "llnotify.h"
 #include "llvfile.h"
@@ -63,20 +64,32 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t
 	}
 	else
 	{
-	    if ( gLandmarkList.mBadList.find(asset_uuid) == gLandmarkList.mBadList.end() )
+	    if ( mBadList.find(asset_uuid) != mBadList.end() )
 		{
-			if (cb)
+			return NULL;
+		}
+		
+		landmark_requested_list_t::iterator iter = mRequestedList.find(asset_uuid);
+		if (iter != mRequestedList.end())
+		{
+			const F32 rerequest_time = 30.f; // 30 seconds between requests
+			if (gFrameTimeSeconds - iter->second < rerequest_time)
 			{
-				loaded_callback_map_t::value_type vt(asset_uuid, cb);
-				mLoadedCallbackMap.insert(vt);
+				return NULL;
 			}
-
-			gAssetStorage->getAssetData(
-				asset_uuid,
-				LLAssetType::AT_LANDMARK,
-				LLLandmarkList::processGetAssetReply,
-				NULL);
 		}
+		
+		if (cb)
+		{
+			loaded_callback_map_t::value_type vt(asset_uuid, cb);
+			mLoadedCallbackMap.insert(vt);
+		}
+
+		gAssetStorage->getAssetData(asset_uuid,
+									LLAssetType::AT_LANDMARK,
+									LLLandmarkList::processGetAssetReply,
+									NULL);
+		mRequestedList[asset_uuid] = gFrameTimeSeconds;
 	}
 	return NULL;
 }
@@ -103,7 +116,8 @@ void LLLandmarkList::processGetAssetReply(
 		if (landmark)
 		{
 			gLandmarkList.mList[ uuid ] = landmark;
-
+			gLandmarkList.mRequestedList.erase(uuid);
+			
 			LLVector3d pos;
 			if(!landmark->getGlobalPos(pos))
 			{
diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h
index ebf1b65e9755569e80407565b68d56234b88d406..d9c326714236d87263bd9abb3b4e8a4e677f508d 100644
--- a/indra/newview/lllandmarklist.h
+++ b/indra/newview/lllandmarklist.h
@@ -74,7 +74,10 @@ class LLLandmarkList
 
 	typedef std::set<LLUUID> landmark_bad_list_t;
 	landmark_bad_list_t mBadList;
-
+	
+	typedef std::map<LLUUID,F32> landmark_requested_list_t;
+	landmark_requested_list_t mRequestedList;
+	
 	// *TODO: make the callback multimap a template class and make use of it
 	// here and in LLLandmark.
 	typedef std::multimap<LLUUID, loaded_callback_t> loaded_callback_map_t;
diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp
index 6ae42d23d32a002e72fff41b88510f1ce490f714..512104a2f420e0b43a14bfa7be77e852dc72ac0f 100755
--- a/indra/newview/llmediadataclient.cpp
+++ b/indra/newview/llmediadataclient.cpp
@@ -367,8 +367,9 @@ BOOL LLMediaDataClient::QueueTimer::tick()
 	// Peel one off of the items from the queue, and execute request
 	request_ptr_t request = queue.top();
 	llassert(!request.isNull());
-	const LLMediaDataClientObject *object = request->getObject();
+	const LLMediaDataClientObject *object = (request.isNull()) ? NULL : request->getObject();
 	bool performed_request = false;
+	bool error = false;
 	llassert(NULL != object);
 	if (NULL != object && object->hasMedia())
 	{
@@ -387,7 +388,11 @@ BOOL LLMediaDataClient::QueueTimer::tick()
 		}
 	}
 	else {
-		if (NULL == object) 
+		if (request.isNull()) 
+		{
+			LL_WARNS("LLMediaDataClient") << "Not Sending request: NULL request!" << LL_ENDL;
+		}
+		else if (NULL == object) 
 		{
 			LL_WARNS("LLMediaDataClient") << "Not Sending request for " << *request << " NULL object!" << LL_ENDL;
 		}
@@ -395,9 +400,10 @@ BOOL LLMediaDataClient::QueueTimer::tick()
 		{
 			LL_WARNS("LLMediaDataClient") << "Not Sending request for " << *request << " hasMedia() is false!" << LL_ENDL;
 		}
+		error = true;
 	}
 	bool exceeded_retries = request->getRetryCount() > mMDC->mMaxNumRetries;
-	if (performed_request || exceeded_retries) // Try N times before giving up 
+	if (performed_request || exceeded_retries || error) // Try N times before giving up 
 	{
 		if (exceeded_retries)
 		{
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index b91e23eace4ac9e0d6b63b1b4fef8f343864f7da..3802d13f8b833bce6edce4cb31b2bc039bf0a2c7 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -164,16 +164,7 @@ void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask)
 - Load navbar height from saved settings (as it's done for status bar) or think of a better way.
 */
 
-S32 NAVIGATION_BAR_HEIGHT = 60; // *HACK
-LLNavigationBar* LLNavigationBar::sInstance = 0;
-
-LLNavigationBar* LLNavigationBar::getInstance()
-{
-	if (!sInstance)
-		sInstance = new LLNavigationBar();
-
-	return sInstance;
-}
+S32 NAVIGATION_BAR_HEIGHT = 60; // *HACK, used in llviewerwindow.cpp
 
 LLNavigationBar::LLNavigationBar()
 :	mTeleportHistoryMenu(NULL),
@@ -198,8 +189,6 @@ LLNavigationBar::LLNavigationBar()
 LLNavigationBar::~LLNavigationBar()
 {
 	mTeleportFinishConnection.disconnect();
-	sInstance = 0;
-
 	LLSearchHistory::getInstance()->save();
 }
 
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 8a65cd24face5adadc6dc55bef5f1c86d639e3f4..f1a1b85a8676f5237283147ac923eaf85121d96a 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -47,12 +47,12 @@ class LLSearchComboBox;
  * Web browser-like navigation bar.
  */ 
 class LLNavigationBar
-:	public LLPanel
+	:	public LLPanel, public LLSingleton<LLNavigationBar>
 {
 	LOG_CLASS(LLNavigationBar);
-
+	
 public:
-	static LLNavigationBar* getInstance();
+	LLNavigationBar();
 	virtual ~LLNavigationBar();
 	
 	/*virtual*/ void	draw();
@@ -65,7 +65,6 @@ class LLNavigationBar
 	void showFavoritesPanel(BOOL visible);
 	
 private:
-	LLNavigationBar();
 
 	void rebuildTeleportHistoryMenu();
 	void showTeleportHistoryMenu();
@@ -91,8 +90,6 @@ class LLNavigationBar
 
 	void fillSearchComboBox();
 
-	static LLNavigationBar *sInstance;
-	
 	LLMenuGL*					mTeleportHistoryMenu;
 	LLButton*					mBtnBack;
 	LLButton*					mBtnForward;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index bbab9944f32b33c483eaf61588862a16d11769fd..148f72703ce598636b47c6c7507bf0a3d92cde52 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -222,12 +222,14 @@ void	LLNearbyChat::addMessage(const LLChat& chat)
 
 	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
 	{
-		LLFloaterScriptDebug::addScriptLine(chat.mText,
-											chat.mFromName, 
-											color, 
-											chat.mFromID);
-		if (!gSavedSettings.getBOOL("ScriptErrorsAsChat"))
+		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
+			return;
+		if (gSavedSettings.getS32("ShowScriptErrorsLocation")== 1)// show error in window //("ScriptErrorsAsChat"))
 		{
+			LLFloaterScriptDebug::addScriptLine(chat.mText,
+												chat.mFromName, 
+												color, 
+												chat.mFromID);
 			return;
 		}
 	}
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 4aefbd1a334fd5dc55f21f9d3492bd0060fafb47..6b0d6d61e0d0568b4a173d6dead3d8d420f74c2d 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -188,6 +188,17 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
 		return;
 	}
 
+	int chat_type = notification["chat_type"].asInteger();
+	
+	if( ((EChatType)chat_type == CHAT_TYPE_DEBUG_MSG))
+	{
+		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE) 
+			return;
+		if(gSavedSettings.getS32("ShowScriptErrorsLocation")== 1)
+			return;
+	}
+		
+
 	//take 1st element from pool, (re)initialize it, put it in active toasts
 
 	LLToast* toast = m_toast_pool.back();
@@ -330,6 +341,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)
 		notification["from_id"] = chat_msg.mFromID;
 		notification["time"] = chat_msg.mTime;
 		notification["source"] = (S32)chat_msg.mSourceType;
+		notification["chat_type"] = (S32)chat_msg.mChatType;
 
 		channel->addNotification(notification);	
 	}
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 22ed1ec219602747804f42fb8c0aa804755dd559..7c17699bf98c9975403e66e34a3954d9872cbb41 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1049,6 +1049,9 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)
 		}
 		else
 		{
+			// Make sure keyboard focus is set to the media focus object.
+			gFocusMgr.setKeyboardFocus(LLViewerMediaFocus::getInstance());
+			
 			media_impl->mouseDown(pick.mUVCoords, gKeyboard->currentMask(TRUE));
 			mMediaMouseCaptureID = mep->getMediaID();
 			setMouseCapture(TRUE);  // This object will send a mouse-up to the media when it loses capture.
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index 2dc317e067f9e0cbed7b714c3f740088720b6d1c..8fd646ee932a9a808805f801e0c41d02cc782e09 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -99,7 +99,7 @@ static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode m
 			gAgent.sendWalkRun(gAgent.getRunning());
 		}
 	}
-	else if (gAllowTapTapHoldRun &&
+	else if (gSavedSettings.getBOOL("AllowTapTapHoldRun") &&
 		 KEYSTATE_DOWN == s &&
 		 !gAgent.getRunning())
 	{
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 464ba4a5b1672a15cc02309a8ecfc6a0112358c9..02fda191bec9379775c332143e7ab92096a52c41 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -49,6 +49,7 @@
 #include "llnotifications.h"
 #include "lluuid.h"
 #include "llkeyboard.h"
+#include "llmutelist.h"
 
 #include <boost/bind.hpp>	// for SkinFolder listener
 #include <boost/signals2.hpp>
@@ -171,6 +172,7 @@ typedef std::vector<LLViewerMediaImpl*> impl_list;
 static impl_list sViewerMediaImplList;
 static LLTimer sMediaCreateTimer;
 static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f;
+static F32 sGlobalVolume = 1.0f;
 
 //////////////////////////////////////////////////////////////////////////////////////////
 static void add_media_impl(LLViewerMediaImpl* media)
@@ -194,6 +196,14 @@ static void remove_media_impl(LLViewerMediaImpl* media)
 	}
 }
 
+class LLViewerMediaMuteListObserver : public LLMuteListObserver
+{
+	/* virtual */ void onChange()  { LLViewerMedia::muteListChanged();}
+};
+
+static LLViewerMediaMuteListObserver sViewerMediaMuteListObserver;
+static bool sViewerMediaMuteListObserverInitialized = false;
+
 
 //////////////////////////////////////////////////////////////////////////////////////////
 // LLViewerMedia
@@ -388,20 +398,56 @@ bool LLViewerMedia::textureHasMedia(const LLUUID& texture_id)
 // static
 void LLViewerMedia::setVolume(F32 volume)
 {
+	if(volume != sGlobalVolume)
+	{
+		sGlobalVolume = volume;
+		impl_list::iterator iter = sViewerMediaImplList.begin();
+		impl_list::iterator end = sViewerMediaImplList.end();
+
+		for(; iter != end; iter++)
+		{
+			LLViewerMediaImpl* pimpl = *iter;
+			pimpl->updateVolume();
+		}
+	}
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+F32 LLViewerMedia::getVolume()
+{
+	return sGlobalVolume;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::muteListChanged()
+{
+	// When the mute list changes, we need to check mute status on all impls.
 	impl_list::iterator iter = sViewerMediaImplList.begin();
 	impl_list::iterator end = sViewerMediaImplList.end();
 
 	for(; iter != end; iter++)
 	{
 		LLViewerMediaImpl* pimpl = *iter;
-		pimpl->setVolume(volume);
+		pimpl->mNeedsMuteCheck = true;
 	}
 }
 
 // This is the predicate function used to sort sViewerMediaImplList by priority.
 static inline bool compare_impl_interest(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2)
 {
-	if(i1->hasFocus())
+	if(i1->mIsMuted || i1->mMediaSourceFailed)
+	{
+		// Muted or failed items always go to the end of the list, period.
+		return false;
+	}
+	else if(i2->mIsMuted || i2->mMediaSourceFailed)
+	{
+		// Muted or failed items always go to the end of the list, period.
+		return true;
+	}
+	else if(i1->hasFocus())
 	{
 		// The item with user focus always comes to the front of the list, period.
 		return true;
@@ -475,8 +521,9 @@ void LLViewerMedia::updateMedia()
 		
 		LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
 
-		if(impl_count_total > (int)max_instances)
+		if(pimpl->mIsMuted || pimpl->mMediaSourceFailed || (impl_count_total > (int)max_instances))
 		{
+			// Never load muted or failed impls.
 			// Hard limit on the number of instances that will be loaded at one time
 			new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
 		}
@@ -536,6 +583,11 @@ void LLViewerMedia::updateMedia()
 			}
 		}
 		
+		if(new_priority != LLPluginClassMedia::PRIORITY_UNLOADED)
+		{
+			impl_count_total++;
+		}
+		
 		pimpl->setPriority(new_priority);
 
 #if 0		
@@ -549,7 +601,6 @@ void LLViewerMedia::updateMedia()
 #endif
 
 		total_cpu += pimpl->getCPUUsage();
-		impl_count_total++;
 	}
 	
 	LL_DEBUGS("PluginPriority") << "Total reported CPU usage is " << total_cpu << llendl;
@@ -591,9 +642,19 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,
 	mDoNavigateOnLoad(false),
 	mDoNavigateOnLoadRediscoverType(false),
 	mDoNavigateOnLoadServerRequest(false),
-	mMediaSourceFailedInit(false),
+	mMediaSourceFailed(false),
+	mRequestedVolume(1.0f),
+	mIsMuted(false),
+	mNeedsMuteCheck(false),
 	mIsUpdated(false)
 { 
+
+	// Set up the mute list observer if it hasn't been set up already.
+	if(!sViewerMediaMuteListObserverInitialized)
+	{
+		LLMuteList::getInstance()->addObserver(&sViewerMediaMuteListObserver);
+		sViewerMediaMuteListObserverInitialized = true;
+	}
 	
 	add_media_impl(this);
 	
@@ -783,7 +844,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)
 	}
 
 	// If we got here, we want to ignore previous init failures.
-	mMediaSourceFailedInit = false;
+	mMediaSourceFailed = false;
 
 	LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight);
 	
@@ -796,11 +857,14 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)
 		media_source->focus(mHasFocus);
 		
 		mMediaSource = media_source;
+
+		updateVolume();
+
 		return true;
 	}
 
 	// Make sure the timer doesn't try re-initing this plugin repeatedly until something else changes.
-	mMediaSourceFailedInit = true;
+	mMediaSourceFailed = true;
 
 	return false;
 }
@@ -885,13 +949,26 @@ void LLViewerMediaImpl::seek(F32 time)
 
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::setVolume(F32 volume)
+{
+	mRequestedVolume = volume;
+	updateVolume();
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+void LLViewerMediaImpl::updateVolume()
 {
 	if(mMediaSource)
 	{
-		mMediaSource->setVolume(volume);
+		mMediaSource->setVolume(mRequestedVolume * LLViewerMedia::getVolume());
 	}
 }
 
+//////////////////////////////////////////////////////////////////////////////////////////
+F32 LLViewerMediaImpl::getVolume()
+{
+	return mRequestedVolume;
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::focus(bool focus)
 {
@@ -1088,9 +1165,6 @@ void LLViewerMediaImpl::navigateHome()
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type,  bool rediscover_type, bool server_request)
 {
-	// Helpful to have media urls in log file. Shouldn't be spammy.
-	llinfos << "url=" << url << " mime_type=" << mime_type << llendl;
-	
 	if(server_request)
 	{
 		setNavState(MEDIANAVSTATE_SERVER_SENT);
@@ -1112,14 +1186,24 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi
 	
 	// and if this was a server request, the navigate on load will also need to be one.
 	mDoNavigateOnLoadServerRequest = server_request;
+	
+	// An explicit navigate resets the "failed" flag.
+	mMediaSourceFailed = false;
 
 	if(mPriority == LLPluginClassMedia::PRIORITY_UNLOADED)
 	{
+		// Helpful to have media urls in log file. Shouldn't be spammy.
+		llinfos << "UNLOADED media id= " << mTextureId << " url=" << url << " mime_type=" << mime_type << llendl;
+
 		// This impl should not be loaded at this time.
 		LL_DEBUGS("PluginPriority") << this << "Not loading (PRIORITY_UNLOADED)" << LL_ENDL;
 		
 		return;
 	}
+
+	// Helpful to have media urls in log file. Shouldn't be spammy.
+	llinfos << "media id= " << mTextureId << " url=" << url << " mime_type=" << mime_type << llendl;
+	
 	
 	// If the caller has specified a non-empty MIME type, look that up in our MIME types list.
 	// If we have a plugin for that MIME type, use that instead of attempting auto-discovery.
@@ -1228,6 +1312,8 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
 		if(!result)
 		{
 			result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask);
+			// Since the viewer internal event dispatching doesn't give us key-up events, simulate one here.
+			(void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask);
 		}
 	}
 	
@@ -1277,7 +1363,7 @@ bool LLViewerMediaImpl::canNavigateBack()
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::update()
 {
-	if(mMediaSource == NULL && !mMediaSourceFailedInit)
+	if(mMediaSource == NULL)
 	{
 		if(mPriority != LLPluginClassMedia::PRIORITY_UNLOADED)
 		{
@@ -1507,7 +1593,8 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
 		case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH:
 		{
 			// The plugin failed to load properly.  Make sure the timer doesn't retry.
-			mMediaSourceFailedInit = true;
+			// TODO: maybe mark this plugin as not loadable somehow?
+			mMediaSourceFailed = true;
 			
 			// TODO: may want a different message for this case?
 			LLSD args;
@@ -1518,6 +1605,9 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
 
 		case MEDIA_EVENT_PLUGIN_FAILED:
 		{
+			// The plugin crashed.
+			mMediaSourceFailed = true;
+
 			LLSD args;
 			args["PLUGIN"] = LLMIMETypes::implType(mMimeType);
 			// SJB: This is getting called every frame if the plugin fails to load, continuously respawining the alert!
@@ -1692,6 +1782,32 @@ void LLViewerMediaImpl::calculateInterest()
 		// This will be a relatively common case now, since it will always be true for unloaded media.
 		mInterest = 0.0f;
 	}
+	
+	if(mNeedsMuteCheck)
+	{
+		// Check all objects this instance is associated with, and those objects' owners, against the mute list
+		mIsMuted = false;
+		
+		std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ;
+		for(; iter != mObjectList.end() ; ++iter)
+		{
+			LLVOVolume *obj = *iter;
+			if(LLMuteList::getInstance()->isMuted(obj->getID()))
+				mIsMuted = true;
+			else
+			{
+				// We won't have full permissions data for all objects.  Attempt to mute objects when we can tell their owners are muted.
+				LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj);
+				if(obj_perm)
+				{
+					if(LLMuteList::getInstance()->isMuted(obj_perm->getOwner()))
+						mIsMuted = true;
+				}
+			}
+		}
+		
+		mNeedsMuteCheck = false;
+	}
 }
 
 F64 LLViewerMediaImpl::getApproximateTextureInterest()
@@ -1799,11 +1915,13 @@ void LLViewerMediaImpl::addObject(LLVOVolume* obj)
 	}
 
 	mObjectList.push_back(obj) ;
+	mNeedsMuteCheck = true;
 }
 	
 void LLViewerMediaImpl::removeObject(LLVOVolume* obj) 
 {
 	mObjectList.remove(obj) ;	
+	mNeedsMuteCheck = true;
 }
 	
 const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const 
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 01640de33ad7db10853e6317d97590630b82132e..b15314e95448bffdee9c074d54a23b60fc73528d 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -95,6 +95,8 @@ class LLViewerMedia
 		static void toggleMusicPlay(void*);
 		static void toggleMediaPlay(void*);
 		static void mediaStop(void*);
+		static F32 getVolume();	
+		static void muteListChanged();
 };
 
 // Implementation functions not exported into header file
@@ -130,6 +132,8 @@ class LLViewerMediaImpl
 	void start();
 	void seek(F32 time);
 	void setVolume(F32 volume);
+	void updateVolume();
+	F32 getVolume();
 	void focus(bool focus);
 	// True if the impl has user focus.
 	bool hasFocus() const;
@@ -169,6 +173,7 @@ class LLViewerMediaImpl
 	bool isMediaPlaying();
 	bool isMediaPaused();
 	bool hasMedia();
+	bool isMediaFailed() { return mMediaSourceFailed; };
 
 	ECursorType getLastSetCursor() { return mLastSetCursor; };
 	
@@ -285,7 +290,10 @@ class LLViewerMediaImpl
 	bool mDoNavigateOnLoad;
 	bool mDoNavigateOnLoadRediscoverType;
 	bool mDoNavigateOnLoadServerRequest;
-	bool mMediaSourceFailedInit;
+	bool mMediaSourceFailed;
+	F32 mRequestedVolume;
+	bool mIsMuted;
+	bool mNeedsMuteCheck;
 
 
 private:
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index ad48ec145ba675156a3fdd4faa876255b0c0d04f..b47e0b84067cdef80a8f4ac6dea89bc3e8422016 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -114,7 +114,7 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac
 	}
 	else
 	{
-		if(hasFocus())
+		if(mFocusedImplID != LLUUID::null)
 		{
 			if(mMediaHUD.get())
 			{
@@ -249,20 +249,18 @@ void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal,
 }
 void LLViewerMediaFocus::onFocusReceived()
 {
-	// Don't do this here -- this doesn't change "inworld media focus", it just changes whether the viewer's input is focused on the media.
-//	LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
-//	if(media_impl.notNull())
-//		media_impl->focus(true);
+	LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
+	if(media_impl)
+		media_impl->focus(true);
 
 	LLFocusableElement::onFocusReceived();
 }
 
 void LLViewerMediaFocus::onFocusLost()
 {
-	// Don't do this here -- this doesn't change "inworld media focus", it just changes whether the viewer's input is focused on the media.
-//	LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
-//	if(media_impl.notNull())
-//		media_impl->focus(false);
+	LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
+	if(media_impl)
+		media_impl->focus(false);
 
 	gViewerWindow->focusClient();
 	LLFocusableElement::onFocusLost();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index a1c15d9d0f3bad2d39321e4f20bd5d4d748a6d42..058f44ef5792a515ff000ffcaf05f1fc98109858 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1678,34 +1678,6 @@ class LLAdvancedTogglePG : public view_listener_t
 };
 
 
-
-////////////////////////////
-// ALLOW TAP-TAP-HOLD RUN //
-////////////////////////////
-
-
-class LLAdvancedToggleAllowTapTapHoldRun : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		gAllowTapTapHoldRun = !(gAllowTapTapHoldRun);
-		return true;
-	}
-};
-
-class LLAdvancedCheckAllowTapTapHoldRun : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		bool new_value = gAllowTapTapHoldRun;
-		return new_value;
-	}
-};
-
-
-
-
-
 class LLAdvancedForceParamsToDefault : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -7966,8 +7938,6 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedTogglePG(), "Advanced.TogglePG");
 	
 	// Advanced > Character (toplevel)
-	view_listener_t::addMenu(new LLAdvancedToggleAllowTapTapHoldRun(), "Advanced.ToggleAllowTapTapHoldRun");
-	view_listener_t::addMenu(new LLAdvancedCheckAllowTapTapHoldRun(), "Advanced.CheckAllowTapTapHoldRun");
 	view_listener_t::addMenu(new LLAdvancedForceParamsToDefault(), "Advanced.ForceParamsToDefault");
 	view_listener_t::addMenu(new LLAdvancedReloadVertexShader(), "Advanced.ReloadVertexShader");
 	view_listener_t::addMenu(new LLAdvancedToggleAnimationInfo(), "Advanced.ToggleAnimationInfo");
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 77b023f6ddfba45e03620d90c7a45cf3878e1bed..aa0987aa7d1223635a663a09366f20d002f12302 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -843,8 +843,11 @@ void LLViewerParcelMgr::renderParcelCollision()
 	if (mRenderCollision && gSavedSettings.getBOOL("ShowBanLines"))
 	{
 		LLViewerRegion* regionp = gAgent.getRegion();
-		BOOL use_pass = mCollisionParcel->getParcelFlag(PF_USE_PASS_LIST);
-		renderCollisionSegments(mCollisionSegments, use_pass, regionp);
+		if (regionp)
+		{
+			BOOL use_pass = mCollisionParcel->getParcelFlag(PF_USE_PASS_LIST);
+			renderCollisionSegments(mCollisionSegments, use_pass, regionp);
+		}
 	}
 }
 
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 220f90c2f529d72f218d5a3c07d5b7bc1afd1e67..aea312dd69930ca29e809eab255aa001c40b4e71 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1665,7 +1665,11 @@ void LLViewerWindow::shutdownViews()
 	// DEV-40930: Clear sModalStack. Otherwise, any LLModalDialog left open
 	// will crump with LL_ERRS.
 	LLModalDialog::shutdownModals();
-
+	
+	// destroy the nav bar, not currently part of gViewerWindow
+	// *TODO: Make LLNavigationBar part of gViewerWindow
+	delete LLNavigationBar::getInstance();
+	
 	// Delete all child views.
 	delete mRootView;
 	mRootView = NULL;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d896e1f7db207ac50266e5aa145ee7f1b2a867da..7d4bef3f7d3f6b34f07c832da13f0fe23798b83f 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -2988,6 +2988,7 @@ static LLFastTimer::DeclareTimer FTM_REBUILD_VBO("VBO Rebuilt");
 
 void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 {
+	llpushcallstacks ;
 	if (group->changeLOD())
 	{
 		group->mLastUpdateDistance = group->mDistance;
@@ -3218,6 +3219,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry");
 void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 {
+	llpushcallstacks ;
 	if (group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY))
 	{
 		LLFastTimer tm(FTM_VOLUME_GEOM);
@@ -3308,6 +3310,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 
 void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort)
 {
+	llpushcallstacks ;
 	//calculate maximum number of vertices to store in a single buffer
 	U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcStride(group->mSpatialPartition->mVertexDataMask);
 	max_vertices = llmin(max_vertices, (U32) 65535);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index b50e71bf485e7dae057a0258392df01b2e7c260d..a37de468b3a957b53c984fe0b08beb3fa96ebbca 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1797,6 +1797,7 @@ void LLPipeline::rebuildPriorityGroups()
 		
 void LLPipeline::rebuildGroups()
 {
+	llpushcallstacks ;
 	// Iterate through some drawables on the non-priority build queue
 	S32 size = (S32) mGroupQ2.size();
 	S32 min_count = llclamp((S32) ((F32) (size * size)/4096*0.25f), 1, size);
diff --git a/indra/newview/skins/default/textures/icons/Generic_Object.png b/indra/newview/skins/default/textures/icons/Generic_Object.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3a80b2aef90ee5749fdadc4438055b98211d86e
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Generic_Object.png differ
diff --git a/indra/newview/skins/default/textures/icons/Info_Over.png b/indra/newview/skins/default/textures/icons/Info_Over.png
new file mode 100644
index 0000000000000000000000000000000000000000..be1cd0706feb09f985bc7801fb92b308abdab95a
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Info_Over.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Animation.png b/indra/newview/skins/default/textures/icons/Inv_Animation.png
index 8b69434066379f3b462290712a01721ba00ee4d7..ab42c61a92498c9b270384547ba0f4c0bcdb2a23 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Animation.png and b/indra/newview/skins/default/textures/icons/Inv_Animation.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_BodyShape.png b/indra/newview/skins/default/textures/icons/Inv_BodyShape.png
index 9d98bfaa7d6865191f392a6969b9b69698ca09c5..97e874d70d27c6caeb77275aeb35ae0b49210bcd 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_BodyShape.png and b/indra/newview/skins/default/textures/icons/Inv_BodyShape.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Clothing.png b/indra/newview/skins/default/textures/icons/Inv_Clothing.png
index 49a54b82e13676619e1fa1e7fec24352ada81d76..e8d246c6faf0aeaa4b4ff49b8f28e79cf8c92d52 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Clothing.png and b/indra/newview/skins/default/textures/icons/Inv_Clothing.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Eye.png b/indra/newview/skins/default/textures/icons/Inv_Eye.png
index 6d0321dde967c31385482fb6812d324ae1d53f7f..e619f56c2b57fa714d8f4cfdfa0bf3ca8f616195 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Eye.png and b/indra/newview/skins/default/textures/icons/Inv_Eye.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png
index 30aa6e04ac059d5aedeaac4da403442a749d8b62..342a973d006cbc7702a30778cc585a695b0177db 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png and b/indra/newview/skins/default/textures/icons/Inv_FolderClosed.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png
index 792ef446e8bcd42fdc330067cd5ccb68db594164..0507c2cbaf0be26ddf84914baf084aebe4e0225a 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png and b/indra/newview/skins/default/textures/icons/Inv_FolderOpen.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gesture.png b/indra/newview/skins/default/textures/icons/Inv_Gesture.png
index c49ae523c810eae8be4520357c4014fc2cce7c33..52695ec19bf8e494e4d3e42e6a6d140f812aacd8 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Gesture.png and b/indra/newview/skins/default/textures/icons/Inv_Gesture.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gloves.png b/indra/newview/skins/default/textures/icons/Inv_Gloves.png
index d81bc961d42a9ee67b70abb2447370928c50781f..d6a2113aafb9d520176ae4ffbb4cb803ffeb9400 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Gloves.png and b/indra/newview/skins/default/textures/icons/Inv_Gloves.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Hair.png b/indra/newview/skins/default/textures/icons/Inv_Hair.png
index 5e68f1ffea67682dea5202fb7537bd2ca50a083b..ae941b0dd537461395329102b31b5d0a5d9a61de 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Hair.png and b/indra/newview/skins/default/textures/icons/Inv_Hair.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Jacket.png b/indra/newview/skins/default/textures/icons/Inv_Jacket.png
index 0e28f45f1903a5d62298a0c2944a78e0228a66eb..3859666f7cc9be0ba9e57579b0f2d305e6a4605c 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Jacket.png and b/indra/newview/skins/default/textures/icons/Inv_Jacket.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Landmark.png b/indra/newview/skins/default/textures/icons/Inv_Landmark.png
index 6648a233935ff5b7e2e58b87ff2e57fd1f68277a..f8ce765c501f57cc29993d6a0a90e59c8c6c0cae 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Landmark.png and b/indra/newview/skins/default/textures/icons/Inv_Landmark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Notecard.png b/indra/newview/skins/default/textures/icons/Inv_Notecard.png
index 830a71311fd750d7f6fb1395edcfd10b5db35870..4645ab8e910312d59c734c27f739621016cda6fa 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Notecard.png and b/indra/newview/skins/default/textures/icons/Inv_Notecard.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Object.png b/indra/newview/skins/default/textures/icons/Inv_Object.png
index a88d0dc4b3163007148fdca717e5b485aa35c12a..f883696a8226eb9cf91b02dcde14a6ea5f86b9ec 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Object.png and b/indra/newview/skins/default/textures/icons/Inv_Object.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Pants.png b/indra/newview/skins/default/textures/icons/Inv_Pants.png
index 2527f7f9c3221999c21eb8dad3cd037ef2f0d560..fe2389f074d63273cf444d31d230f725098924df 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Pants.png and b/indra/newview/skins/default/textures/icons/Inv_Pants.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Script.png b/indra/newview/skins/default/textures/icons/Inv_Script.png
index e9c9b163fdc7f8d352d801551f4e06fada3f3975..0fba27a7aa6ae211567bb492660a765efdb05a33 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Script.png and b/indra/newview/skins/default/textures/icons/Inv_Script.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shirt.png b/indra/newview/skins/default/textures/icons/Inv_Shirt.png
index 7cc880a124cf145b7cf2b9b97c1fcab8eb19f88d..81c1538dd2f55e08a9c08b00d4ecead1b370405f 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Shirt.png and b/indra/newview/skins/default/textures/icons/Inv_Shirt.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shoe.png b/indra/newview/skins/default/textures/icons/Inv_Shoe.png
index 0b148647eb99feff7a94bb14373d533e973f63b6..51e1c7bbb7b7def6b136580c21b8be006bc89108 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Shoe.png and b/indra/newview/skins/default/textures/icons/Inv_Shoe.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Skin.png b/indra/newview/skins/default/textures/icons/Inv_Skin.png
index 8e20638bba7be5da883d1316a39cd2d7c04cf4d6..b7da922046aa82c6da161c88e8000f067372fdfa 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Skin.png and b/indra/newview/skins/default/textures/icons/Inv_Skin.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Skirt.png b/indra/newview/skins/default/textures/icons/Inv_Skirt.png
index 40860a35992799a83d155d6ae2913664aa09e4bc..246e9a87aa03373b9185876027dc11a67c4046ec 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Skirt.png and b/indra/newview/skins/default/textures/icons/Inv_Skirt.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Snapshot.png b/indra/newview/skins/default/textures/icons/Inv_Snapshot.png
index 17e710a84366f51782f96164c77f634952690bd1..39efd2be1b575f21b36267961a1b9904b7cb65f5 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Snapshot.png and b/indra/newview/skins/default/textures/icons/Inv_Snapshot.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Socks.png b/indra/newview/skins/default/textures/icons/Inv_Socks.png
index b8169dcb36cf179b68cf92fe9fbeb30938bd080a..30d7d7c2393945e4deac5999d88109a9414e17ae 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Socks.png and b/indra/newview/skins/default/textures/icons/Inv_Socks.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Sound.png b/indra/newview/skins/default/textures/icons/Inv_Sound.png
index 1a50dd17daf1dfb12884d873b1bf4bfc03545490..44c271c868f2024ba5346b89374e72f11f207498 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Sound.png and b/indra/newview/skins/default/textures/icons/Inv_Sound.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Texture.png b/indra/newview/skins/default/textures/icons/Inv_Texture.png
index 2d6d1b54bbd0f172864b674f1e578e08be714191..dbc41c5e995b6ff7d74fc91333b849deeca2817d 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Texture.png and b/indra/newview/skins/default/textures/icons/Inv_Texture.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Underpants.png b/indra/newview/skins/default/textures/icons/Inv_Underpants.png
index 77f56c574f462da534de23ce795243052f1a248e..b1e7c2a55f432c3640219245c017a00285b04878 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Underpants.png and b/indra/newview/skins/default/textures/icons/Inv_Underpants.png differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Undershirt.png b/indra/newview/skins/default/textures/icons/Inv_Undershirt.png
index 954eab766021800d2f6222369251bb01ddf16af5..9340dbb9758af3d146c1b1adef17e85e649d9612 100644
Binary files a/indra/newview/skins/default/textures/icons/Inv_Undershirt.png and b/indra/newview/skins/default/textures/icons/Inv_Undershirt.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 01976c9a5c2a67ab1965477b7acd653999c4fe30..b46b766fc0f052a750409cc1f3d11c60ccd7e6b0 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -7,7 +7,7 @@
   <texture name="Accordion_Off" file_name="containers/Accordion_Off.png" preload="false" />
   <texture name="Accordion_Press" file_name="containers/Accordion_Press.png" preload="false" />
 
-<texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
+ <texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
 
   <texture name="AddItem_Disabled" file_name="icons/AddItem_Disabled.png" preload="false" />
   <texture name="AddItem_Off" file_name="icons/AddItem_Off.png" preload="false" />
@@ -71,7 +71,6 @@
   <texture name="ComboButton_Press" file_name="widgets/ComboButton_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-
   <texture name="Container" file_name="containers/Container.png" preload="false" />
 
   <texture name="DisclosureArrow_Closed_Off" file_name="widgets/DisclosureArrow_Closed_Off.png" preload="true" />
@@ -102,6 +101,7 @@
 
   <texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" />
   <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" />
+  <texture name="Generic_Object" file_name="icons/Generic_Object.png" preload="false" />
   <texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" />
   <texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" />
 
@@ -123,8 +123,6 @@
   <texture name="Icon_Dock_Press" file_name="windows/Icon_Dock_Press.png" preload="true" />
 
   <texture name="Icon_For_Sale" file_name="icons/Icon_For_sale.png" preload="false" />
-  <texture name="Banner_ForSale" file_name="Banner_ForSale.png" preload="false" />
-  <texture name="Banner_YouAreHere" file_name="Banner_YouAreHere.png" preload="false" />
 
   <texture name="Icon_Gear_Background" file_name="windows/Icon_Gear_Background.png" preload="false" />
   <texture name="Icon_Gear_Foreground" file_name="windows/Icon_Gear_Foreground.png" preload="false" />
@@ -151,7 +149,7 @@
   <texture name="Inspector_Background" file_name="windows/Inspector_Background.png" preload="false" />
   <texture name="Inspector_Hover" file_name="windows/Inspector_Hover.png" preload="false" />
 
-  <texture name="Inv_Acessories" file_name="icons/Inv_Acessories.png" preload="false" />
+  <texture name="Inv_Acessories" file_name="icons/Inv_Accessories.png" preload="false" />
   <texture name="Inv_Animation" file_name="icons/Inv_Animation.png" preload="false" />
   <texture name="Inv_BodyShape" file_name="icons/Inv_BodyShape.png" preload="false" />
   <texture name="Inv_CallingCard" file_name="icons/Inv_CallingCard.png" preload="false" />
@@ -229,6 +227,9 @@
   <texture name="NearbyVoice_Lvl3" file_name="bottomtray/NearbyVoice_Lvl3.png" preload="false" />
   <texture name="NearbyVoice_On" file_name="bottomtray/NearbyVoice_On.png" preload="false" />
 
+  <texture name="NoEntryLines" file_name="world/NoEntryLines.png" use_mips="true" preload="false" />
+  <texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" />
+
   <texture name="Object_Cone" file_name="build/Object_Cone.png" preload="false" />
   <texture name="Object_Cube" file_name="build/Object_Cube.png" preload="false" />
   <texture name="Object_Cylinder" file_name="build/Object_Cylinder.png" preload="false" />
@@ -256,6 +257,42 @@
   <texture name="Overhead_M" file_name="world/Overhead_M.png" preload="false" />
   <texture name="Overhead_S" file_name="world/Overhead_S.png" preload="false" />
 
+  <texture name="parcel_drk_Build" file_name="icons/parcel_drk_Build.png" preload="false" />
+  <texture name="parcel_drk_BuildNo" file_name="icons/parcel_drk_BuildNo.png" preload="false" />
+  <texture name="parcel_drk_Damage" file_name="icons/parcel_drk_Damage.png" preload="false" />
+  <texture name="parcel_drk_DamageNo" file_name="icons/parcel_drk_DamageNo.png" preload="false" />
+  <texture name="parcel_drk_Fly" file_name="icons/parcel_drk_Fly.png" preload="false" />
+  <texture name="parcel_drk_FlyNo" file_name="icons/parcel_drk_FlyNo.png" preload="false" />
+  <texture name="parcel_drk_ForSale" file_name="icons/parcel_drk_ForSale.png" preload="false" />
+  <texture name="parcel_drk_ForSaleNo" file_name="icons/parcel_drk_ForSaleNo.png" preload="false" />
+  <texture name="parcel_drk_M" file_name="icons/parcel_drk_M.png" preload="false" />
+  <texture name="parcel_drk_PG" file_name="icons/parcel_drk_PG.png" preload="false" />
+  <texture name="parcel_drk_Push" file_name="icons/parcel_drk_Push.png" preload="false" />
+  <texture name="parcel_drk_PushNo" file_name="icons/parcel_drk_PushNo.png" preload="false" />
+  <texture name="parcel_drk_R" file_name="icons/parcel_drk_R.png" preload="false" />
+  <texture name="parcel_drk_Scripts" file_name="icons/parcel_drk_Scripts.png" preload="false" />
+  <texture name="parcel_drk_ScriptsNo" file_name="icons/parcel_drk_ScriptsNo.png" preload="false" />
+  <texture name="parcel_drk_Voice" file_name="icons/parcel_drk_Voice.png" preload="false" />
+  <texture name="parcel_drk_VoiceNo" file_name="icons/parcel_drk_VoiceNo.png" preload="false" />
+
+  <texture name="parcel_lght_Build" file_name="icons/parcel_lght_Build.png" preload="false" />
+  <texture name="parcel_lght_BuildNo" file_name="icons/parcel_lght_BuildNo.png" preload="false" />
+  <texture name="parcel_lght_Damage" file_name="icons/parcel_lght_Damage.png" preload="false" />
+  <texture name="parcel_lght_DamageNo" file_name="icons/parcel_lght_DamageNo.png" preload="false" />
+  <texture name="parcel_lght_Fly" file_name="icons/parcel_lght_Fly.png" preload="false" />
+  <texture name="parcel_lght_FlyNo" file_name="icons/parcel_lght_FlyNo.png" preload="false" />
+  <texture name="parcel_lght_ForSale" file_name="icons/parcel_lght_ForSale.png" preload="false" />
+  <texture name="parcel_lght_ForSaleNo" file_name="icons/parcel_lght_ForSaleNo.png" preload="false" />
+  <texture name="parcel_lght_M" file_name="icons/parcel_lght_M.png" preload="false" />
+  <texture name="parcel_lght_PG" file_name="icons/parcel_lght_PG.png" preload="false" />
+  <texture name="parcel_lght_Push" file_name="icons/parcel_lght_Push.png" preload="false" />
+  <texture name="parcel_lght_PushNo" file_name="icons/parcel_lght_PushNo.png" preload="false" />
+  <texture name="parcel_lght_R" file_name="icons/parcel_lght_R.png" preload="false" />
+  <texture name="parcel_lght_Scripts" file_name="icons/parcel_lght_Scripts.png" preload="false" />
+  <texture name="parcel_lght_ScriptsNo" file_name="icons/parcel_lght_ScriptsNo.png" preload="false" />
+  <texture name="parcel_lght_Voice" file_name="icons/parcel_lght_Voice.png" preload="false" />
+  <texture name="parcel_lght_VoiceNo" file_name="icons/parcel_lght_VoiceNo.png" preload="false" />
+
   <texture name="Progress_1" file_name="icons/Progress_1.png" preload="false" />
   <texture name="Progress_2" file_name="icons/Progress_2.png" preload="false" />
   <texture name="Progress_3" file_name="icons/Progress_3.png" preload="false" />
@@ -336,7 +373,7 @@
   <texture name="SliderThumb_Disabled" file_name="widgets/SliderThumb_Disabled.png" />
   <texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" />
 
-  <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="false" />
+  <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" />
   <texture name="Snapshot_Press" file_name="bottomtray/Snapshot_Press.png" preload="false" />
 
@@ -432,6 +469,7 @@
   <texture name="VoicePTT_On" file_name="bottomtray/VoicePTT_On.png" preload="false" />
 
   <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" />
+  <texture name="Widget_UpArrow" file_name="icons/Widget_UpArrow.png" preload="true" />
 
   <texture name="Window_Background" file_name="windows/Window_Background.png" preload="true" />
   <texture name="Window_Foreground" file_name="windows/Window_Foreground.png" preload="true" />
@@ -442,6 +480,9 @@
 
   <!--WARNING OLD ART *do not use*-->
 
+  <texture name="Banner_ForSale" file_name="Banner_ForSale.png" preload="false" />
+  <texture name="Banner_YouAreHere" file_name="Banner_YouAreHere.png" preload="false" />
+
   <texture name="btn_chatbar.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" />
   <texture name="btn_chatbar_selected.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" />
 
@@ -559,54 +600,6 @@
   <texture name="icon_popular.tga" />
   <texture name="icon_top_pick.tga" />
 
-  <texture name="inv_folder_animation.tga" />
-  <texture name="inv_folder_bodypart.tga" />
-  <texture name="inv_folder_callingcard.tga" />
-  <texture name="inv_folder_clothing.tga" />
-  <texture name="inv_folder_current_outfit.tga" />
-  <texture name="inv_folder_gesture.tga" />
-  <texture name="inv_folder_landmark.tga" />
-  <texture name="inv_folder_lostandfound.tga" />
-  <texture name="inv_folder_my_outfits.tga" />
-  <texture name="inv_folder_notecard.tga" />
-  <texture name="inv_folder_object.tga" />
-  <texture name="inv_folder_outfit.tga" />
-  <texture name="inv_folder_plain_closed.tga" />
-  <texture name="inv_folder_script.tga" />
-  <texture name="inv_folder_snapshot.tga" />
-  <texture name="inv_folder_sound.tga" />
-  <texture name="inv_folder_texture.tga" />
-  <texture name="inv_folder_trash.tga" />
-
-  <texture name="inv_item_animation.tga" />
-  <texture name="inv_item_skin.tga" />
-  <texture name="inv_item_callingcard_offline.tga" />
-  <texture name="inv_item_callingcard_online.tga" />
-  <texture name="inv_item_eyes.tga" />
-  <texture name="inv_item_gesture.tga" />
-  <texture name="inv_item_gloves.tga" />
-  <texture name="inv_item_hair.tga" />
-  <texture name="inv_item_jacket.tga" />
-  <texture name="inv_item_landmark.tga" />
-  <texture name="inv_item_landmark_visited.tga" />
-  <texture name="inv_item_linkitem.tga" />
-  <texture name="inv_item_linkfolder.tga" />
-  <texture name="inv_item_notecard.tga" />
-  <texture name="inv_item_object.tga" />
-  <texture name="inv_item_object_multi.tga" />
-  <texture name="inv_item_pants.tga" />
-  <texture name="inv_item_script.tga" />
-  <texture name="inv_item_shape.tga" />
-  <texture name="inv_item_shirt.tga" />
-  <texture name="inv_item_shoes.tga" />
-  <texture name="inv_item_skirt.tga" />
-  <texture name="inv_item_snapshot.tga" />
-  <texture name="inv_item_socks.tga" />
-  <texture name="inv_item_sound.tga" />
-  <texture name="inv_item_texture.tga" />
-  <texture name="inv_item_underpants.tga" />
-  <texture name="inv_item_undershirt.tga" />
-
   <texture name="lag_status_critical.tga" />
   <texture name="lag_status_good.tga" />
   <texture name="lag_status_warning.tga" />
@@ -625,45 +618,12 @@
 
   <texture name="media_icon.tga" file_name="icn_label_media.tga" />
   <texture name="music_icon.tga" file_name="icn_label_music.tga" />
-  <texture name="NoEntryLines" file_name="world/NoEntryLines.png" use_mips="true" preload="false" />
-  <texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" />
 
   <texture name="notify_tip_icon.tga" />
   <texture name="notify_caution_icon.tga" />
   <texture name="notify_next.png" preload="true" />
   <texture name="notify_box_icon.tga" />
 
-  <texture name="object_cone.tga" />
-  <texture name="object_cone_active.tga" />
-  <texture name="object_cube.tga" />
-  <texture name="object_cube_active.tga" />
-  <texture name="object_cylinder.tga" />
-  <texture name="object_cylinder_active.tga" />
-  <texture name="object_grass.tga" />
-  <texture name="object_grass_active.tga" />
-  <texture name="object_hemi_cone.tga" />
-  <texture name="object_hemi_cone_active.tga" />
-  <texture name="object_hemi_cylinder.tga" />
-  <texture name="object_hemi_cylinder_active.tga" />
-  <texture name="object_hemi_sphere.tga" />
-  <texture name="object_hemi_sphere_active.tga" />
-  <texture name="object_prism.tga" />
-  <texture name="object_prism_active.tga" />
-  <texture name="object_pyramid.tga" />
-  <texture name="object_pyramid_active.tga" />
-  <texture name="object_ring.tga" />
-  <texture name="object_ring_active.tga" />
-  <texture name="object_sphere.tga" />
-  <texture name="object_sphere_active.tga" />
-  <texture name="object_tetrahedron.tga" />
-  <texture name="object_tetrahedron_active.tga" />
-  <texture name="object_torus.tga" />
-  <texture name="object_torus_active.tga" />
-  <texture name="object_tree.tga" />
-  <texture name="object_tree_active.tga" />
-  <texture name="object_tube.tga" />
-  <texture name="object_tube_active.tga" />
-
   <texture name="pixiesmall.j2c" use_mips="true" />
   <texture name="script_error.j2c" use_mips="true" />
   <texture name="silhouette.j2c" use_mips="true" />
@@ -679,11 +639,6 @@
   <texture name="status_no_push.tga" />
   <texture name="status_no_scripts.tga" />
 
-  <texture name="tool_dozer.tga" />
-  <texture name="tool_dozer_active.tga" />
-  <texture name="tool_zoom.tga" />
-  <texture name="tool_zoom_active.tga" />
-
   <texture name="icn_active-speakers-dot-lvl0.tga" />
   <texture name="icn_active-speakers-dot-lvl1.tga" />
   <texture name="icn_active-speakers-dot-lvl2.tga" />
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index 25d337ccec457be62e2f0d131d93ccff25e49beb..0bd4b441c6165533ebb39d7e7026526617b15abd 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -14,6 +14,7 @@
  save_rect="true"
  title="Nearby Chat"
  save_visibility="true"
+ single_instance="true" 
  width="320">
             <chat_history
              allow_html="true" 
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index 285045f2c8a216e2ad03b098d919cfd62649f792..90a77b22b66a44a2061ea10e73fb934151c77064 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -12,32 +12,32 @@
  width="620">
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="OK"
      label_selected="OK"
      layout="topleft"
-     left="427"
+     right="-105"
      name="OK"
-     top="435"
+     top="433"
      width="90">
         <button.commit_callback
          function="Pref.OK" />
     </button>
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Cancel"
      label_selected="Cancel"
      layout="topleft"
-     left_pad="3"
+     left_pad="5"
      name="Cancel"
-     top_delta="0"
+     right="-10"
      width="90" >
         <button.commit_callback
          function="Pref.Cancel" />
     </button>
     <tab_container
-     follows="left|top|right|bottom"
+     follows="all"
      height="410"
      layout="topleft"
      left="0"
@@ -48,14 +48,14 @@
      top="21"
      width="620">
         <panel
-		 class="panel_preference"
+	 class="panel_preference"
          filename="panel_preferences_general.xml"
          label="General"
          layout="topleft"
          help_topic="preferences_general_tab"
          name="general" />
         <panel
-		 class="panel_preference"
+	 class="panel_preference"
          filename="panel_preferences_graphics1.xml"
          label="Graphics"
          layout="topleft"
@@ -103,13 +103,6 @@
          layout="topleft"
          help_topic="preferences_advanced1_tab"
          name="advanced1" />
-        <panel
-		 class="panel_preference"
-         filename="panel_preferences_advanced2.xml"
-         label="Move or Kill"
-         layout="topleft"
-         help_topic="preferences_advanced2_tab"
-         name="advanced2" />
     </tab_container>
 
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index a523f40bb821b1af80cf0dbc665f8ae00833c59e..11c4e5d8fb807bd539af8ead2a2e223eb1c2365d 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  auto_tile="true"
- height="800"
+ height="460"
  layout="topleft"
  name="gesture_preview"
  help_topic="gesture_preview"
@@ -46,10 +46,11 @@
      height="10"
      layout="topleft"
      left="10"
-     name="Name"
+     name="desc_label"
      top="25"
+     font.style="BOLD"
      width="100">
-        Name (not working yet):
+        Description:
     </text>
     <line_editor
      follows="left|top"
@@ -67,70 +68,270 @@
      height="10"
      layout="topleft"
      left="10"
-     name="desc_label"
+     font.style="BOLD"
+     name="trigger_label"
      top_pad="10"
      width="100">
-        Description:
+        Trigger:
     </text>
     <line_editor
      follows="left|top"
-     height="40"
+     height="20"
+     layout="topleft"
+     left_delta="84"
+     max_length="31"
+     name="trigger_editor"
+     top_delta="-4"
+     width="180" />
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifSmall"
+     height="10"
+     layout="topleft"
+     left="10"
+     font.style="BOLD"
+     name="replace_text"
+     tool_tip="Replace the trigger word(s) with these words. For example, trigger &apos;hello&apos; replace with &apos;howdy&apos; will turn the chat &apos;I wanted to say hello&apos; into &apos;I wanted to say howdy&apos; as well as playing the gesture!"
+     top_pad="10"
+     width="200">
+        Replace with:
+    </text>
+    <line_editor
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left_delta="84"
+     max_length="31"
+     name="replace_editor"
+     tool_tip="Replace the trigger word(s) with these words. For example, trigger &apos;hello&apos; replace with &apos;howdy&apos; will turn the chat &apos;I wanted to say hello&apos; into &apos;I wanted to say howdy&apos; as well as playing the gesture"
+     top_delta="-4"
+     width="180" />
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifSmall"
+     height="10"
+     layout="topleft"
+     left="10"
+     font.style="BOLD"
+     name="key_label"
+     top_pad="10"
+     width="100">
+        Shortcut Key:
+    </text>
+    <combo_box
+     height="20"
+     label="None"
      layout="topleft"
      left_delta="84"
-     name="desc2"
+     name="modifier_combo"
      top_delta="-4"
+     width="75" />
+    <combo_box
+     height="20"
+     label="None"
+     layout="topleft"
+     left_pad="10"
+     name="key_combo"
+     top_delta="0"
+     width="75" />
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifSmall"
+     height="10"
+     layout="topleft"
+     left="10"
+     font.style="BOLD"
+     name="library_label"
+     top="135"
+     width="100">
+        Library:
+    </text>
+    <scroll_list
+     follows="top|left"
+     height="60"
+     layout="topleft"
+     left="10"
+     name="library_list"
+     top="150"
+     width="180">
+        <scroll_list.rows
+         value="Animation" />
+        <scroll_list.rows
+         value="Sound" />
+        <scroll_list.rows
+         value="Chat" />
+        <scroll_list.rows
+         value="Wait" />
+    </scroll_list>
+    <button
+     follows="top|left"
+     height="20"
+     font="SansSerifSmall"
+     label="Add &gt;&gt;"
+     layout="topleft"
+     left_pad="10"
+     name="add_btn"
+     top_delta="0"
+     width="70" />
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifSmall"
+     height="10"
+     layout="topleft"
+     left="10"
+     font.style="BOLD"
+     name="steps_label"
+     top_pad="50"
+     width="100">
+        Steps:
+    </text>
+    <scroll_list
+     follows="top|left"
+     height="85"
+     layout="topleft"
+     left="10"
+     name="step_list"
+     top_pad="5"
      width="180" />
-    
-    <accordion
-     layout="topleft"
-     left="2"
-     width="276"
-     top="95"
-     height="580"
-     follows="all"
-     name="group_accordion">
-    <accordion_tab
-     min_height="90"
-     title="Shortcuts"
-     name="snapshot_destination_tab" 
-     an_resize="false">
-    <panel
-     class="floater_preview_shortcut"
-     filename="floater_preview_gesture_shortcut.xml"
-     name="floater_preview_shortcut"/>
-    </accordion_tab>
-    <accordion_tab
-     min_height="400"
-     title="Steps"
-     name="snapshot_file_settings_tab"
-     can_resize="false">
-    <panel
-     class="floater_preview_steps"
-     filename="floater_preview_gesture_steps.xml"
-     name="floater_preview_steps"/> 
-    </accordion_tab>
-    <accordion_tab
-     min_height="155"
-     title="Info"
-     name="snapshot_capture_tab"
-     can_resize="false">
-    <panel
-     class="floater_preview_info"
-     filename="floater_preview_gesture_info.xml"
-     name="floater_preview_info"/> 
-    </accordion_tab>
-    <!--accordion_tab
-     min_height="100"
-     title="Permissions"
-     name="snapshot_capture_tab2"
-     can_resize="false">
-    <panel
-     class="floater_snapshot_capture"
-     filename="floater_snapshot_Permissions.xml"
-     name="snapshot_capture_panel2"/> 
-    </accordion_tab-->
-    </accordion>
-    <!--check_box
+    <button
+     follows="top|left"
+     height="20"
+     font="SansSerifSmall"
+     label="Up"
+     layout="topleft"
+     left_pad="10"
+     name="up_btn"
+     top_delta="0"
+     width="70" />
+    <button
+     follows="top|left"
+     height="20"
+     font="SansSerifSmall"
+     label="Down"
+     layout="topleft"
+     left_delta="0"
+     name="down_btn"
+     top_pad="10"
+     width="70" />
+    <button
+     follows="top|left"
+     height="20"
+     font="SansSerifSmall"
+     label="Remove"
+     layout="topleft"
+     left_delta="0"
+     name="delete_btn"
+     top_pad="10"
+     width="70" />
+    <text
+     follows="top|left"
+     height="60"
+     layout="topleft"
+     left="15"
+     name="options_text"
+     top="330"
+     width="205" />
+    <combo_box
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left_delta="15"
+     name="animation_list"
+     top="345"
+     width="100" />
+    <combo_box
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left_delta="0"
+     name="sound_list"
+     top_delta="0"
+     width="100" />
+    <line_editor
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left_delta="0"
+     max_length="127"
+     name="chat_editor"
+     top_delta="0"
+     width="100" />
+    <radio_group
+     draw_border="false"
+     follows="top|left"
+     height="40"
+     layout="topleft"
+     left_pad="8"
+     name="animation_trigger_type"
+     top_delta="0"
+     width="80">
+        <radio_item
+         height="16"
+         label="Start"
+         layout="topleft"
+         left="3"
+         name="start"
+         top="-11"
+         width="80" />
+        <radio_item
+         height="16"
+         label="Stop"
+         layout="topleft"
+         left_delta="0"
+         name="stop"
+         top_pad="10"
+         width="80" />
+    </radio_group>
+    <check_box
+     follows="top|left"
+     height="20"
+     label="until animations are done"
+     layout="topleft"
+     left="16"
+     name="wait_anim_check"
+     top="340"
+     width="100" />
+    <check_box
+     follows="top|left"
+     height="20"
+     label="time in seconds"
+     layout="topleft"
+     left_delta="0"
+     name="wait_time_check"
+     top_delta="20"
+     width="100" />
+    <line_editor
+     follows="top|left"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     max_length="15"
+     name="wait_time_editor"
+     top_delta="0"
+     width="50" />
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifSmall"
+     height="30"
+     layout="topleft"
+     left="10"
+     name="help_label"
+     top_pad="20"
+     word_wrap="true"
+     width="265">
+        All steps happen simultaneously, unless you add wait steps.
+    </text>
+    <check_box
      follows="top|left"
      height="20"
      label="Active"
@@ -138,35 +339,24 @@
      left="20"
      name="active_check"
      tool_tip="Active gestures can be triggered by chatting their trigger phrases or pressing their hot keys.  Gestures usually become inactive when there is a key binding conflict."
-     top="365"
-     width="100" /-->  
-    
+     top_pad="0"
+     width="100" />
     <button
-     follows="bottom|left"
+     follows="top|left"
      height="20"
      label="Preview"
      layout="topleft"
-     left="20"
+     left_delta="75"
      name="preview_btn"
-     top_pad="30"
+     top_delta="2"
      width="80" />
     <button
      follows="top|left"
      height="20"
      label="Save"
      layout="topleft"
-     left_pad="5"
+     left_pad="10"
      name="save_btn"
      top_delta="0"
      width="80" />
-    <button
-     follows="top|left"
-     height="20"
-     label="Cancel (not working)"
-     layout="topleft"
-     left_pad="5"
-     name="cancel_btn"
-     top_delta="0"
-     width="80" />   
-
 </floater>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 8cdcee69277fe5e0bf5d1adbb8ee61a9f1e079bb..29fe046ed3838d243fd4d39b65dbb3fba0beb92c 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2836,8 +2836,8 @@
         <button
          follows="left|top"
          height="20"
-         label="Land profile"
-         label_selected="Land profile"
+         label="About Land"
+         label_selected="About Land"
          layout="topleft"
          left_delta="0"
          name="button about land"
diff --git a/indra/newview/skins/default/xui/en/menu_text_editor.xml b/indra/newview/skins/default/xui/en/menu_text_editor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7c9e6f0796287044faf435d0247abd4bf4416232
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_text_editor.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ name="Text editor context menu">
+  <menu_item_call
+   label="Cut"
+   layout="topleft"
+   name="Cut"
+   shortcut="control|X">
+    <menu_item_call.on_click
+     function="Edit.Cut" />
+    <menu_item_call.on_enable
+     function="Edit.EnableCut" />
+  </menu_item_call>
+  <menu_item_call
+   label="Copy"
+   layout="topleft"
+   name="Copy"
+   shortcut="control|C">
+    <menu_item_call.on_click
+     function="Edit.Copy" />
+    <menu_item_call.on_enable
+     function="Edit.EnableCopy" />
+  </menu_item_call>
+  <menu_item_call
+   label="Paste"
+   layout="topleft"
+   name="Paste"
+   shortcut="control|V">
+    <menu_item_call.on_click
+     function="Edit.Paste" />
+    <menu_item_call.on_enable
+     function="Edit.EnablePaste" />
+  </menu_item_call>
+  <menu_item_call
+ label="Delete"
+ layout="topleft"
+ name="Delete"
+ shortcut="Del">
+    <menu_item_call.on_click
+     function="Edit.Delete" />
+    <menu_item_call.on_enable
+     function="Edit.EnableDelete" />
+  </menu_item_call>
+  <menu_item_call
+   label="Select All"
+   layout="topleft"
+   name="Select All"
+   shortcut="control|A">
+    <menu_item_call.on_click
+     function="Edit.SelectAll" />
+    <menu_item_call.on_enable
+     function="Edit.EnableSelectAll" />
+  </menu_item_call>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 34d049818056519ec1a68cd838ffc4b827fb34ae..a59a8b065ff342d8d68e2f2032e8d26c905981d9 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -232,7 +232,7 @@
         <menu_item_separator
          layout="topleft" />
         <menu_item_call
-         label="Place Profile"
+         label="About Land"
          layout="topleft"
          name="About Land">
             <menu_item_call.on_click
@@ -1618,6 +1618,234 @@
              function="ToggleControl"
              parameter="MouseSmooth" />
         </menu_item_check>
+        <menu_item_separator
+         layout="topleft" />
+        <menu
+         label="Shortcuts"
+         layout="topleft"
+         name="Shortcuts"
+         tear_off="true"
+         visible="false">
+            <menu_item_check
+               label="Search"
+               layout="topleft"
+               name="Search"
+               shortcut="control|F">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="search" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="search" />
+            </menu_item_check>
+            <menu_item_call
+             enabled="false"
+             label="Release Keys"
+             layout="topleft"
+             name="Release Keys">
+                <menu_item_call.on_click
+                 function="Tools.ReleaseKeys"
+                 parameter="" />
+                <menu_item_call.on_enable
+                 function="Tools.EnableReleaseKeys"
+                 parameter="" />
+            </menu_item_call>
+            <menu_item_call
+             label="Set UI Size to Default"
+             layout="topleft"
+             name="Set UI Size to Default">
+                <menu_item_call.on_click
+                 function="View.DefaultUISize" />
+            </menu_item_call>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_check
+             label="Always Run"
+             layout="topleft"
+             name="Always Run"
+             shortcut="control|R">
+                <menu_item_check.on_check
+                 function="World.CheckAlwaysRun" />
+                <menu_item_check.on_click
+                 function="World.AlwaysRun" />
+            </menu_item_check>
+            <menu_item_check
+             label="Fly"
+             layout="topleft"
+             name="Fly"
+             shortcut="Home">
+                <menu_item_check.on_click
+                 function="Agent.toggleFlying" />
+                <menu_item_check.on_enable
+                 function="Agent.enableFlying" />
+            </menu_item_check>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_call
+             label="Close Window"
+             layout="topleft"
+             name="Close Window"
+             shortcut="control|W">
+                <menu_item_call.on_click
+                 function="File.CloseWindow" />
+                <menu_item_call.on_enable
+                 function="File.EnableCloseWindow" />
+            </menu_item_call>
+            <menu_item_call
+             label="Close All Windows"
+             layout="topleft"
+             name="Close All Windows"
+             shortcut="control|shift|W">
+                <menu_item_call.on_click
+                 function="File.CloseAllWindows" />
+                <menu_item_call.on_enable
+                 function="File.EnableCloseAllWindows" />
+            </menu_item_call>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_call
+             label="Snapshot to Disk"
+             layout="topleft"
+             name="Snapshot to Disk"
+             shortcut="control|`"
+             use_mac_ctrl="true">
+                <menu_item_call.on_click
+                 function="File.TakeSnapshotToDisk" />
+            </menu_item_call>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_call
+             label="Mouselook"
+             layout="topleft"
+             name="Mouselook"
+             shortcut="M">
+                <menu_item_call.on_click
+                 function="View.Mouselook" />
+                <menu_item_call.on_enable
+                 function="View.EnableMouselook" />
+            </menu_item_call>
+            <menu_item_check
+             label="Joystick Flycam"
+             layout="topleft"
+             name="Joystick Flycam"
+             shortcut="alt|shift|F">
+                <menu_item_check.on_check
+                 function="View.CheckJoystickFlycam" />
+                <menu_item_check.on_click
+                 function="View.JoystickFlycam" />
+                <menu_item_check.on_enable
+                 function="View.EnableJoystickFlycam" />
+            </menu_item_check>
+            <menu_item_call
+             label="Reset View"
+             layout="topleft"
+             name="Reset View"
+             shortcut="Esc">
+                <menu_item_call.on_click
+                 function="View.ResetView" />
+            </menu_item_call>
+            <menu_item_call
+             label="Look at Last Chatter"
+             layout="topleft"
+             name="Look at Last Chatter"
+             shortcut="control|\">
+                <menu_item_call.on_click
+                 function="View.LookAtLastChatter" />
+                <menu_item_call.on_enable
+                 function="View.EnableLastChatter" />
+            </menu_item_call>
+            <menu_item_separator
+             layout="topleft" />
+            <menu
+             create_jump_keys="true"
+             label="Select Build Tool"
+             layout="topleft"
+             name="Select Tool"
+             tear_off="true">
+                <menu_item_call
+                 label="Focus Tool"
+                 layout="topleft"
+                 name="Focus"
+                 shortcut="control|1">
+                    <menu_item_call.on_click
+                     function="Tools.SelectTool"
+                     parameter="focus" />
+                </menu_item_call>
+                <menu_item_call
+                 label="Move Tool"
+                 layout="topleft"
+                 name="Move"
+                 shortcut="control|2">
+                    <menu_item_call.on_click
+                     function="Tools.SelectTool"
+                     parameter="move" />
+                </menu_item_call>
+                <menu_item_call
+                 label="Edit Tool"
+                 layout="topleft"
+                 name="Edit"
+                 shortcut="control|3">
+                    <menu_item_call.on_click
+                     function="Tools.SelectTool"
+                     parameter="edit" />
+                </menu_item_call>
+                <menu_item_call
+                 label="Create Tool"
+                 layout="topleft"
+                 name="Create"
+                 shortcut="control|4">
+                    <menu_item_call.on_click
+                     function="Tools.SelectTool"
+                     parameter="create" />
+                </menu_item_call>
+                <menu_item_call
+                 label="Land Tool"
+                 layout="topleft"
+                 name="Land"
+                 shortcut="control|5">
+                    <menu_item_call.on_click
+                     function="Tools.SelectTool"
+                     parameter="land" />
+                </menu_item_call>
+            </menu>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_call
+             label="Zoom In"
+             layout="topleft"
+             name="Zoom In"
+             shortcut="control|0">
+                <menu_item_call.on_click
+                 function="View.ZoomIn" />
+            </menu_item_call>
+            <menu_item_call
+             label="Zoom Default"
+             layout="topleft"
+             name="Zoom Default"
+             shortcut="control|9">
+                <menu_item_call.on_click
+                 function="View.ZoomDefault" />
+            </menu_item_call>
+            <menu_item_call
+             label="Zoom Out"
+             layout="topleft"
+             name="Zoom Out"
+             shortcut="control|8">
+                <menu_item_call.on_click
+                 function="View.ZoomOut" />
+            </menu_item_call>
+            <menu_item_separator
+             layout="topleft" />
+            <menu_item_call
+             label="Toggle Fullscreen"
+             layout="topleft"
+             name="Toggle Fullscreen"
+             >
+               <!-- Note: shortcut="alt|Enter" was deleted from the preceding node-->
+                <menu_item_call.on_click
+                 function="View.Fullscreen" />
+            </menu_item_call>
+        </menu>
         <menu_item_separator
          layout="topleft" />
         <menu_item_call
@@ -2416,232 +2644,6 @@
                  parameter="stop record" />
             </menu_item_call>
         </menu>
-        <menu
-         label="Shortcuts"
-         layout="topleft"
-         name="Shortcuts"
-         tear_off="true"
-         visible="false">
-            <menu_item_check
-               label="Search"
-               layout="topleft"
-               name="Search"
-               shortcut="control|F">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="search" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="search" />
-            </menu_item_check>
-            <menu_item_call
-             enabled="false"
-             label="Release Keys"
-             layout="topleft"
-             name="Release Keys">
-                <menu_item_call.on_click
-                 function="Tools.ReleaseKeys"
-                 parameter="" />
-                <menu_item_call.on_enable
-                 function="Tools.EnableReleaseKeys"
-                 parameter="" />
-            </menu_item_call>
-            <menu_item_call
-             label="Set UI Size to Default"
-             layout="topleft"
-             name="Set UI Size to Default">
-                <menu_item_call.on_click
-                 function="View.DefaultUISize" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_check
-             label="Always Run"
-             layout="topleft"
-             name="Always Run"
-             shortcut="control|R">
-                <menu_item_check.on_check
-                 function="World.CheckAlwaysRun" />
-                <menu_item_check.on_click
-                 function="World.AlwaysRun" />
-            </menu_item_check>
-            <menu_item_check
-             label="Fly"
-             layout="topleft"
-             name="Fly"
-             shortcut="Home">
-                <menu_item_check.on_click
-                 function="Agent.toggleFlying" />
-                <menu_item_check.on_enable
-                 function="Agent.enableFlying" />
-            </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Close Window"
-             layout="topleft"
-             name="Close Window"
-             shortcut="control|W">
-                <menu_item_call.on_click
-                 function="File.CloseWindow" />
-                <menu_item_call.on_enable
-                 function="File.EnableCloseWindow" />
-            </menu_item_call>
-            <menu_item_call
-             label="Close All Windows"
-             layout="topleft"
-             name="Close All Windows"
-             shortcut="control|shift|W">
-                <menu_item_call.on_click
-                 function="File.CloseAllWindows" />
-                <menu_item_call.on_enable
-                 function="File.EnableCloseAllWindows" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Snapshot to Disk"
-             layout="topleft"
-             name="Snapshot to Disk"
-             shortcut="control|`"
-             use_mac_ctrl="true">
-                <menu_item_call.on_click
-                 function="File.TakeSnapshotToDisk" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Mouselook"
-             layout="topleft"
-             name="Mouselook"
-             shortcut="M">
-                <menu_item_call.on_click
-                 function="View.Mouselook" />
-                <menu_item_call.on_enable
-                 function="View.EnableMouselook" />
-            </menu_item_call>
-            <menu_item_check
-             label="Joystick Flycam"
-             layout="topleft"
-             name="Joystick Flycam"
-             shortcut="alt|shift|F">
-                <menu_item_check.on_check
-                 function="View.CheckJoystickFlycam" />
-                <menu_item_check.on_click
-                 function="View.JoystickFlycam" />
-                <menu_item_check.on_enable
-                 function="View.EnableJoystickFlycam" />
-            </menu_item_check>
-            <menu_item_call
-             label="Reset View"
-             layout="topleft"
-             name="Reset View"
-             shortcut="Esc">
-                <menu_item_call.on_click
-                 function="View.ResetView" />
-            </menu_item_call>
-            <menu_item_call
-             label="Look at Last Chatter"
-             layout="topleft"
-             name="Look at Last Chatter"
-             shortcut="control|\">
-                <menu_item_call.on_click
-                 function="View.LookAtLastChatter" />
-                <menu_item_call.on_enable
-                 function="View.EnableLastChatter" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu
-             create_jump_keys="true"
-             label="Select Build Tool"
-             layout="topleft"
-             name="Select Tool"
-             tear_off="true">
-                <menu_item_call
-                 label="Focus Tool"
-                 layout="topleft"
-                 name="Focus"
-                 shortcut="control|1">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="focus" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Move Tool"
-                 layout="topleft"
-                 name="Move"
-                 shortcut="control|2">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="move" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Edit Tool"
-                 layout="topleft"
-                 name="Edit"
-                 shortcut="control|3">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="edit" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Create Tool"
-                 layout="topleft"
-                 name="Create"
-                 shortcut="control|4">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="create" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Land Tool"
-                 layout="topleft"
-                 name="Land"
-                 shortcut="control|5">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="land" />
-                </menu_item_call>
-            </menu>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Zoom In"
-             layout="topleft"
-             name="Zoom In"
-             shortcut="control|0">
-                <menu_item_call.on_click
-                 function="View.ZoomIn" />
-            </menu_item_call>
-            <menu_item_call
-             label="Zoom Default"
-             layout="topleft"
-             name="Zoom Default"
-             shortcut="control|9">
-                <menu_item_call.on_click
-                 function="View.ZoomDefault" />
-            </menu_item_call>
-            <menu_item_call
-             label="Zoom Out"
-             layout="topleft"
-             name="Zoom Out"
-             shortcut="control|8">
-                <menu_item_call.on_click
-                 function="View.ZoomOut" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Toggle Fullscreen"
-             layout="topleft"
-             name="Toggle Fullscreen"
-             >
-               <!-- Note: shortcut="alt|Enter" was deleted from the preceding node-->
-                <menu_item_call.on_click
-                 function="View.Fullscreen" />
-            </menu_item_call>
-        </menu>
 
         <menu
          create_jump_keys="true"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 1196d788e4ca6346c646e76b9c10841eaffd94d5..9065c6b3e8bfbb63fb15ac0374ff546a53344d19 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -2,21 +2,21 @@
 <panel
  mouse_opaque="true"
  background_visible="true"
- bg_alpha_color="0.25 0.25 0.25 1"
- bg_opaque_color="0.25 0.25 0.25 1"
+ bg_alpha_color="DkGray"
+ bg_opaque_color="DkGray"
  follows="left|bottom|right"
- height="28"
+ height="33"
  layout="topleft"
  left="0"
  name="bottom_tray"
  top="28"
- border_visible="true"
+ border_visible="false"
  width="1000">
     <layout_stack
-     mouse_opaque="false"    
+     mouse_opaque="false"
      border_size="0"
-     clip="false" 
-     follows="left|right|bottom|top"
+     clip="false"
+     follows="all"
      height="28"
      layout="topleft"
      left="0"
@@ -26,39 +26,27 @@
      width="1000">
         <icon
          auto_resize="false"
-         color="0 0 0 0"
          follows="left|right"
          height="10"
          image_name="spacer24.tga"
          layout="topleft"
          left="0"
          top="0"
-         width="5"/>
+         width="4" />
         <layout_panel
- 		 mouse_opaque="false"        
+ 	mouse_opaque="false"
          auto_resize="false"
          follows="left|right"
          height="28"
          layout="topleft"
-         left="5"
-         min_height="28"
+         left="0"
+         min_height="23"
          width="310"
          top="0"
          min_width="300"
          name="chat_bar"
          user_resize="false"
          filename="panel_nearby_chat_bar.xml"/>
-		 <icon
-         auto_resize="false"
-         color="0 0 0 0"
-         follows="left|right"
-         height="10"
-         image_name="spacer24.tga"
-         layout="topleft"
-         left="0"
-         name="DUMMY"
-         top="0"
-         width="3"/>
         <layout_panel
          mouse_opaque="false"
          auto_resize="false"
@@ -66,26 +54,25 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="100"
-         top_delta="-10"
-         min_width="100"
+         width="96"
+         top_delta="0"
+         min_width="96"
          name="speak_panel"
          user_resize="false">
 		    <chiclet_talk
 		     follows="right"
-		     height="20"
+		     height="23"
 		     speak_button.font="SansSerifMedium"
 		     speak_button.tab_stop="true"
 		     show_button.tab_stop="true"
 		     layout="topleft"
 		     left="0"
 		     name="talk"
-		     top="6"
-		     width="100" />
-         </layout_panel>                  
+		     top="3"
+		     width="96" />
+         </layout_panel>
 		 <icon
          auto_resize="false"
-         color="0 0 0 0"
          follows="left|right"
          height="10"
          image_name="spacer24.tga"
@@ -93,7 +80,7 @@
          left="0"
          name="DUMMY"
          top="0"
-         width="5"/>
+         width="4"/>
         <layout_panel
          mouse_opaque="false"
          auto_resize="false"
@@ -101,20 +88,21 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="90"
-         top_delta="-10"
-         min_width="90"
+         width="76"
+         top_delta="0"
+         min_width="76"
          name="gesture_panel"
          user_resize="false">
-		    <gesture_combo_box
+		    <button
 		      follows="right"
-		     height="20"
-		     label="Gestures"
+		     height="23"
+		     label="Gesture"
 		     layout="topleft"
 		     name="Gesture"
 		     left="0"
-		     top="6"
-		     width="90" />
+		     top="3"
+             use_ellipses="true"
+		     width="76" />
         </layout_panel>
 		 <icon
          auto_resize="false"
@@ -126,29 +114,28 @@
          left="0"
          name="DUMMY"
          top="0"
-         width="5"/>   
+         width="4"/>
         <layout_panel
-         mouse_opaque="false"        
+         mouse_opaque="false"
          auto_resize="false"
          follows="right"
          height="28"
          layout="topleft"
          min_height="28"
          name="movement_panel"
-         width="70"
-         top_delta="-10"
-         min_width="70">
+         width="76"
+         min_width="76">
             <button
              follows="left|right"
-             height="20"
+             height="23"
              use_ellipses="true"
              is_toggle="true"
              label="Move"
              layout="topleft"
              name="movement_btn"
-             tool_tip="Shows/hides movement controls" 
-             top="6"
-             width="70">
+             tool_tip="Show/hide movement controls"
+             top="3"
+             width="76">
                 <button.init_callback
                  function="Button.SetDockableFloaterToggle"
                  parameter="moveview" />
@@ -164,75 +151,81 @@
          left="0"
          name="DUMMY"
          top="0"
-         width="8"/>
+         width="4"/>
         <layout_panel
-         mouse_opaque="false"        
+         mouse_opaque="false"
          auto_resize="false"
          follows="left|right"
          height="28"
          layout="topleft"
          min_height="28"
-         min_width="100"
+         min_width="76"
          name="cam_panel"
          top_delta="-10"
          width="100">
             <button
              follows="left|right"
-             height="20"
+             height="23"
              use_ellipses="true"
              is_toggle="true"
              label="View"
              layout="topleft"
              left="0"
-             tool_tip="Shows/hides camera controls" 
-             top="6"
+             tool_tip="Show/hide camera controls"
+             top="3"
              name="camera_btn"
-             width="70">
+             width="76">
                 <button.init_callback
                  function="Button.SetDockableFloaterToggle"
                  parameter="camera" />
             </button>
         </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         name="DUMMY"
+         top="0"
+         width="4"/>
         <layout_panel
-         mouse_opaque="false"        
+         mouse_opaque="false"
          auto_resize="false"
-         follows="right"
+         follows="left|right"
          height="28"
          layout="topleft"
-         min_height="28"
-         min_width="35"
          name="snapshot_panel"
-         top_delta="-10"
-         width="35">         
+         width="35">
             <split_button
              arrow_position="right"
-             follows="right"
-             height="18"
+         follows="left|right"
+             height="23"
              left="0"
-             layout="topleft"             
+             layout="topleft"
              name="snapshots"
-             top="6"
-             width="35">
-                <split_button.arrow_button 
-                 image_selected="camera_presets/camera_presets_arrow_right.png"
-                 image_unselected="camera_presets/camera_presets_arrow_right.png"
-                 image_disabled_selected="camera_presets/camera_presets_arrow_right.png" 
-                 image_disabled="camera_presets/camera_presets_arrow_right.png"
-                 name="snapshot_settings"
-                 tool_tip="Snapshot settings" />
+             width="46"
+             top="3">
                 <split_button.item
-                 image_selected="camera_presets/camera_presets_snapshot.png"
-                 image_unselected="camera_presets/camera_presets_snapshot.png"
+                 image_overlay="Snapshot_Off"
                  name="snapshot"
-                 tool_tip="Take snapshot" />
-            </split_button>                  
+                 tool_tip="Take snapshot"
+                 />
+                <split_button.arrow_button
+                 name="snapshot_settings"
+                 image_overlay="Widget_UpArrow"
+                 tool_tip="Snapshot and Preset Views"
+                 width="18"
+                 />
+            </split_button>
         </layout_panel>
         <layout_panel
          mouse_opaque="false"
          follows="left|right"
          height="28"
          layout="topleft"
-         min_height="28"
          top="0"
          name="chiclet_list_panel"
          width="189"
@@ -240,13 +233,13 @@
          user_resize="false"
          auto_resize="true">
             <chiclet_panel
-	         mouse_opaque="false"
+	    mouse_opaque="false"
              follows="left|right"
-             height="25"
+             height="28"
              layout="topleft"
              left="0"
              name="chiclet_list"
-             top="1"
+             top="0"
              chiclet_padding="3"
              scrolling_offset="40"
              width="189" />
@@ -261,36 +254,6 @@
          left="0"
          top="0"
          width="5"/>
-      <icon
-         auto_resize="false"
-         color="0 0 0 0"
-         follows="left|right"
-         height="10"
-         image_name="spacer24.tga"
-         layout="topleft"
-         left="0"
-         top="0"
-         width="10"/>
-        <view_border
-         auto_resize="false"
-         bevel_style="in"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         left="270"
-         name="well_separator"
-         top="0"
-         width="1" />
-        <icon
-         auto_resize="false"
-         color="0 0 0 0"
-         follows="left|right"
-         height="10"
-         image_name="spacer24.tga"
-         layout="topleft"
-         left="0"
-         top="0"
-         width="10"/>
         <layout_panel
          auto_resize="false"
          follows="right"
@@ -299,8 +262,8 @@
          min_height="28"
          top="0"
          name="sys_well_panel"
-         width="48"
-         min_width="48"
+         width="34"
+         min_width="34"
          user_resize="false">
             <chiclet_notification
              follows="right"
@@ -308,24 +271,25 @@
              layout="topleft"
              left="0"
              name="sys_well"
-             top="2"
-             width="48">
+             top="3"
+             width="34">
               <button
-               image_selected="bottom_tray_sys_notifications_selected.tga"
-               image_unselected="bottom_tray_sys_notifications.tga"/>
-              <unread_notifications
-               width="20"
-               height="20"
+              auto_resize="true"
+               halign="right"
+               height="23"
+               follows="right"
+               flash_color="EmphasisColor"
+               name="Unread"
+               picture_style="true"
+               image_overlay="Widget_UpArrow" />
+               <unread_notifications
+               width="34"
+               height="23"
                left="22"
-               top="23"/>
-<!-- 
-			  <chiclet_notification.commit_callback
-				 function="Notification.Show"
-				 parameter="ClickUnimplemented" />
- -->               				 
-			</chiclet_notification>
+               top="23" />
+	    </chiclet_notification>
         </layout_panel>
-        <icon
+       <icon
          auto_resize="false"
          color="0 0 0 0"
          follows="left|right"
@@ -334,6 +298,6 @@
          layout="topleft"
          left="0"
          top="0"
-         width="5"/>
+         width="10"/>
     </layout_stack>
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index 2fd82d8f3d4812a41f202fd8b1b0b1c6f6671215..af00b96d270f3593e9402db8ac260796caaded2e 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -6,7 +6,7 @@
  layout="topleft"
  left="0"
  name="chat_bar"
- top="24"
+ top="21"
  width="310">
     <string name="min_width">
         310
@@ -18,20 +18,19 @@
      border_style="line"
      border_thickness="1"
      follows="left|right"
-     height="20"
+     height="23"
      label="Click here to chat."
      layout="topleft"
      left_delta="7"
      left="0"
      name="chat_box"
      tool_tip="Press Enter to say, Ctrl+Enter to shout"
-     top="3"
+     top="0"
      width="250" />
     <output_monitor
      auto_update="true"
      follows="right"
      draw_border="false"
-     halign="left"
      height="16"
      layout="topleft"
      left_pad="-24"
@@ -40,15 +39,15 @@
      top="4"
      visible="true"
      width="20" />
-    <button 
-     follows="right" 
+    <button
+     follows="right"
      width="45"
-     top="3" 
-     layout="topleft" 
-     left_pad="5"
-     label="Log" 
-     height="20"
-     tool_tip="Shows/hides nearby chat log">
+     top="0"
+     layout="topleft"
+     left_pad="8"
+     label="Log"
+     height="23"
+     tool_tip="Show/hide nearby chat log">
     <button.commit_callback function="Floater.Toggle" parameter="nearby_chat"/>
     </button>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index 16fdbd704542612ec1089fae6054898bef2d2f6f..f42bab14de14402bf1400680d3198e23d9d891aa 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -235,7 +235,7 @@ Avatars:
      width="237"
      top_pad="0" />
     <check_box
-     control_name="test"
+     control_name="ShowScriptErrors"
      height="20"
      label="Show script errors"
      layout="topleft"
@@ -244,7 +244,7 @@ Avatars:
      width="256"
      top_pad="10"/>
     <radio_group
-	 enabled_control="EnableShowScriptErrors"
+	 enabled_control="ShowScriptErrors"
 	 control_name="ShowScriptErrorsLocation"
      draw_border="false"
      height="40"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 8a28719d98393a111b8bebd5b608572aa0e6ea25..832c9775ce2fbc6880d14b97f14ef172682676bf 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  border="true"
- follows="left|top|right|bottom"
+ follows="all"
  height="408"
- label="Audio &amp; Video"
+ label="Sounds"
  layout="topleft"
  left="102"
  name="Preference Media panel"
@@ -12,18 +12,20 @@
     <slider
      control_name="AudioLevelMaster"
      follows="left|top"
+     font.style="BOLD"
      height="15"
      increment="0.05"
      initial_value="0.5"
      label="Master volume"
-     label_width="125"
+     label_width="160"
      layout="topleft"
-     left="30"
+     left="0"
      name="System Volume"
      show_text="false"
+     slider_label.halign="right"
      top_pad="5"
      volume="true"
-     width="425">
+     width="350">
         <slider.commit_callback
          function="Pref.setControlFalse"
          parameter="MuteAudio" />
@@ -31,43 +33,44 @@
     <button
      control_name="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
+     left_pad="16"
      name="mute_audio"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
+     top_delta="-2"
+     width="22" />
     <check_box
      control_name="MuteWhenMinimized"
-     height="16"
+     height="15"
      initial_value="true"
      label="Mute if minimized"
      layout="topleft"
-     left="165"
+     left="167"
      name="mute_when_minimized"
      top_pad="5"
      width="215" />
     <slider
      control_name="AudioLevelAmbient"
      disabled_control="MuteAudio"
-     follows="left|topt"
+     follows="left|top"
      height="15"
      increment="0.05"
      initial_value="0.5"
      label="Ambient"
-     label_width="125"
+     label_width="160"
      layout="topleft"
-     left="30"
+     left="0"
      name="Wind Volume"
      show_text="false"
-     top_pad="5"
+     slider_label.halign="right"
+     top_pad="7"
      volume="true"
-     width="300">
+     width="350">
         <slider.commit_callback
          function="Pref.setControlFalse"
          parameter="MuteAmbient" />
@@ -76,53 +79,54 @@
      control_name="MuteAmbient"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
+     left_pad="16"
      name="mute_wind"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
-    <slider
-     control_name="AudioLevelSFX"
+     top_delta="-2"
+     width="22" />
+        <slider
+     control_name="AudioLevelUI"
      disabled_control="MuteAudio"
      follows="left|top"
      height="15"
      increment="0.05"
      initial_value="0.5"
-     label="Sounds"
-     label_width="125"
+     label="Buttons"
+     label_width="160"
      layout="topleft"
-     left="30"
-     name="SFX Volume"
+     left="0"
+     name="UI Volume"
      show_text="false"
-     top_pad="5"
+     slider_label.halign="right"
+     top_pad="7"
      volume="true"
-     width="300">
+     width="350">
         <slider.commit_callback
          function="Pref.setControlFalse"
-         parameter="MuteSounds" />
+         parameter="MuteUI" />
     </slider>
     <button
-     control_name="MuteSounds"
+     control_name="MuteUI"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
-     name="mute_sfx"
+     left_pad="16"
+     name="mute_ui"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
-    <slider
+     top_delta="-2"
+     width="22" />
+        <slider
      control_name="AudioLevelMedia"
      disabled_control="MuteAudio"
      follows="left|top"
@@ -130,14 +134,15 @@
      increment="0.05"
      initial_value="0.5"
      label="Media"
-     label_width="125"
+     label_width="160"
      layout="topleft"
-     left="30"
+     left="0"
      name="Media Volume"
      show_text="false"
-     top_pad="5"
+     slider_label.halign="right"
+     top_pad="7"
      volume="true"
-     width="300">
+     width="350">
     <slider.commit_callback
      function="Pref.setControlFalse"
      parameter="MuteMedia" />
@@ -146,52 +151,53 @@
      control_name="MuteMedia"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
+     left_pad="16"
      name="mute_media"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
+     top_delta="-2"
+     width="22" />
     <slider
-     control_name="AudioLevelUI"
+     control_name="AudioLevelSFX"
      disabled_control="MuteAudio"
      follows="left|top"
      height="15"
      increment="0.05"
      initial_value="0.5"
-     label="UI"
-     label_width="125"
+     label="Sound effects"
+     label_width="160"
+     slider_label.halign="right"
      layout="topleft"
-     left="30"
-     name="UI Volume"
+     left="0"
+     name="SFX Volume"
      show_text="false"
-     top_pad="5"
+     top_pad="7"
      volume="true"
-     width="300">
+     width="350">
         <slider.commit_callback
          function="Pref.setControlFalse"
-         parameter="MuteUI" />
+         parameter="MuteSounds" />
     </slider>
     <button
-     control_name="MuteUI"
+     control_name="MuteSounds"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
-     name="mute_ui"
+     left_pad="16"
+     name="mute_sfx"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
+     top_delta="-2"
+     width="22" />
     <slider
      control_name="AudioLevelMusic"
      disabled_control="MuteAudio"
@@ -199,15 +205,16 @@
      height="15"
      increment="0.05"
      initial_value="0.5"
-     label="Music"
-     label_width="125"
+     label="Streaming music"
+     label_width="160"
      layout="topleft"
-     left="30"
+     left="0"
      name="Music Volume"
+     slider_label.halign="right"
      show_text="false"
-     top_pad="5"
+     top_pad="7"
      volume="true"
-     width="300">
+     width="350">
         <slider.commit_callback
          function="Pref.setControlFalse"
          parameter="MuteMusic" />
@@ -216,199 +223,206 @@
      control_name="MuteMusic"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
+     left_pad="16"
      name="mute_music"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
+     top_delta="-2"
+     width="22" />
+     <check_box
+     height="16"
+	 control_name ="EnableVoiceChat"
+	 disabled_control="CmdLineDisableVoice"
+     label="Enable Voice"
+     layout="topleft"
+     left="22"
+     name="enable_voice_check"
+     width="100">
+    </check_box>
     <slider
      control_name="AudioLevelVoice"
+     enabled_control="EnableVoiceChat"
      disabled_control="MuteAudio"
      follows="left|top"
      height="15"
      increment="0.05"
      initial_value="0.5"
-     label="Voice"
-     label_width="125"
+	 label="Voice"
+     label_width="60"
      layout="topleft"
-     left="30"
+     left="100"
      name="Voice Volume"
      show_text="false"
-     top_pad="5"
+     slider_label.halign="right"
+     top_pad="-15"
      volume="true"
-     width="300">
+     width="250">
         <slider.commit_callback
          function="Pref.setControlFalse"
          parameter="MuteVoice" />
     </slider>
     <button
      control_name="MuteVoice"
+     enabled_control="EnableVoiceChat"
      disabled_control="MuteAudio"
      follows="top|right"
-     height="16"
-     image_selected="icn_speaker-muted_dark.tga"
-     image_unselected="icn_speaker_dark.tga"
+     height="18"
+     image_selected="parcel_drk_VoiceNo"
+     image_unselected="parcel_drk_Voice"
      is_toggle="true"
      layout="topleft"
-     left_pad="30"
+     left_pad="16"
      name="mute_voice"
      picture_style="true"
      tab_stop="false"
-     top_delta="-1"
-     width="25" />
+     top_delta="-2"
+     width="22" />
     <text
      type="string"
      length="1"
      follows="left|top"
-     height="16"
+     height="13"
      layout="topleft"
-     left="30"
+     left="170"
      name="Listen from"
-     top_pad="5"
-     width="100">
+     width="200">
         Listen from:
     </text>
-    <radio_group
-	 enabled_control="EnableVoiceChat"
-	 control_name="VoiceEarLocation"
+    <icon
+	 follows="left"
+	 height="18"
+	 image_name="CameraView_Off"
+	 name="camera_icon"
+	 mouse_opaque="false"
+	 visible="true"
+	 width="18" />
+	<icon
+	 follows="left"
+	 height="18"
+	 image_name="Move_Walk_Off"
+	 name="avatar_icon"
+	 mouse_opaque="false"
+	 visible="true"
+	 width="18" />
+   <radio_group
+     enabled_control="EnableVoiceChat"
+     control_name="VoiceEarLocation"
      draw_border="false"
-     height="40"
-     layout="topleft"
-     left_delta="50"
-     name="ear_location"
-     top_pad="0"
-     width="364">
+	 follows="left"
+     left_delta="20"
+	 top = "210"
+	 width="221"
+	 height="38"
+     name="ear_location">
         <radio_item
          height="16"
-         label="Listen from camera position"
-         layout="topleft"
-         left="3"
+         label="Camera position"
+         left_pad="1"
+		 follows="topleft"
          name="0"
-         top="3"
-         width="315" />
+         top_delta="-30"
+         width="200" />
         <radio_item
          height="16"
-         label="Listen from avatar position"
-         layout="topleft"
+		 follows="topleft"
+         label="Avatar position"
          left_delta="0"
          name="1"
-         top_delta="16"
-         width="315" />
+         top_delta="19"
+         width="200" />
     </radio_group>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left="30"
-     name="Sound out/in"
-     top_pad="2"
-     width="100">
-        Sound out/in:
-    </text>
     <button
      control_name="ShowDeviceSettings"
-     follows="left|top"
-     height="20"
+     follows="left|bottom"
+     height="19"
      is_toggle="true"
-     label="Device settings"
+     label="Input / Output  Devices"
      layout="topleft"
-     left_delta="55"
+     left="165"
+     top_pad="12"
      name="device_settings_btn"
-     top_pad="0"
-     width="155" />
+     width="190" />
     <panel
+    background_visible="true"
+     bg_alpha_color="DkGray"
      visiblity_control="ShowDeviceSettings"
      border="false"
-	 follows="top|left"
-     height="260"
+     follows="top|left"
+     height="145"
      label="DeviceSettings"
      layout="topleft"
      left="0"
      name="Device Settings"
-     top_pad="5"
-     width="485">
+     width="501">
+      <icon
+             height="18"
+             image_name="Microphone_On"
+             left="80"
+             name="microphone_icon"
+             mouse_opaque="false"
+             top="7"
+             visible="true"
+             width="18" />
     <text
      type="string"
      length="1"
+      font.style="BOLD"
      follows="left|top"
      height="16"
      layout="topleft"
-     left="30"
-     name="Input device (microphone):"
-     top_pad="0"
+     left_pad="3"
+     name="Input"
      width="200">
-        Input device (microphone):
+        Input
     </text>
     <combo_box
-     height="18"
+     height="19"
      layout="topleft"
-     left_delta="55"
+     left="165"
      max_chars="128"
      name="voice_input_device"
-     top_pad="2"
-     width="225" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left="30"
-     name="Output device (speakers):"
-     top_pad="5"
-     width="200">
-        Output device (speakers):
-    </text>
-    <combo_box
-     height="18"
-     layout="topleft"
-     left_delta="55"
-     max_chars="128"
-     name="voice_output_device"
-     top_pad="2"
-     width="225" />
-    <text
+     top_pad="0"
+     width="200" />
+   <text
      type="string"
      length="1"
      follows="left|top"
      height="16"
      layout="topleft"
-     left="30"
-     name="Input level:"
+     left="165"
+     name="My volume label"
      top_pad="10"
      width="200">
-        Input level
+        My volume:
     </text>
-    <slider_bar
+      <slider
      follows="left|top"
      height="17"
      increment="0.05"
      initial_value="1.0"
      layout="topleft"
-     left_delta="125"
+     left="160"
      max_val="2"
      name="mic_volume_slider"
      tool_tip="Change the volume using this slider"
-     top_delta="-1"
-     width="175" />
+     top_pad="0"
+     width="220" />
     <text
      type="string"
+     text_color="EmphasisColor"
      length="1"
      follows="left|top"
-     height="20"
+     height="18"
      layout="topleft"
      left_pad="5"
      name="wait_text"
-     top_delta="1"
-     width="200">
+     top_delta="0"
+     width="110">
         Please wait
     </text>
     <locate
@@ -446,16 +460,57 @@
      name="bar4"
      top_delta="0"
      width="20" />
-    <text
+  <!--  <text
      type="string"
-     height="40"
+     height="37"
      left="30"
      name="voice_intro_text1"
      top_pad="-4"
-     width="480"
+     width="410"
      word_wrap="true">
-        Adjust the slider to control how loud you sound to other Residents. To test the input level, simply speak into your microphone.
+        Adjust the slider to control how loud you sound to other people. To test your volume, simply speak into your microphone
+    </text>-->
+          <icon
+             height="18"
+             image_name="parcel_lght_Voice"
+             left="80"
+             name="speaker_icon"
+             mouse_opaque="false"
+             top_pad="-8"
+             visible="true"
+             width="22" />
+    <text
+    font.style="BOLD"
+     type="string"
+     length="1"
+     follows="left|top"
+     height="15"
+     layout="topleft"
+     left_pad="0"
+     name="Output"
+     width="200">
+        Output
     </text>
+    <combo_box
+     height="19"
+     layout="topleft"
+     left="165"
+     max_chars="128"
+     name="voice_output_device"
+     top_pad="0"
+     width="200" />
+    </panel>
+          <!-- Until new panel is hooked up to code, we need to be able to get to
+    the old window to change input devices. James -->
+  <button
+    follows="left|bottom"
+    label="Old"
+    name="legacy_device_window_btn"
+    height="16"
+    left="20"
+    top="-270"
+    width="40"
+    commit_callback.function="Floater.Show"
+    commit_callback.parameter="pref_voicedevicesettings"
+    />
     </panel>
-    
-</panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 4c19b22ac596e9ace0b441119d72a5b6ce5126e9..81bc12c33ccc18e0b599c6254c797ade9d5fd44c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1819,7 +1819,7 @@ this texture in your inventory
 	<string name="broken_link" value=" (broken_link)" />
 	<string name="LoadingContents">Loading contents...</string>
 	<string name="NoContents">No contents</string>
-	<string name="WornOnAttachmentPoint"> (worn on [ATTACHMENT_POINT])</string>
+	<string name="WornOnAttachmentPoint" value=" (worn on [ATTACHMENT_POINT])" />
 
 	<!-- Gestures labels -->
     <!-- use value="" because they have preceding spaces -->
diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
index 505c7ba9364d3f6020cf0074cf4fb8099ab8c2c6..98b3e2faaada9f6dbd9e6a97734a19d1f786de4f 100644
--- a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <output_monitor
-  image_mute="mute_icon.tga"
+  image_mute="parcel_lght_VoiceNo"
   image_off="VoicePTT_Off"
   image_on="VoicePTT_On"
   image_level_1="VoicePTT_Lvl1"
diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml
index c0d3c6d7f6f58cc5347a78a3eea3ae982a1c7911..2ff9ada90a7ed7e61f8b10940610858c4dc9f045 100644
--- a/indra/newview/skins/default/xui/en/widgets/split_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/split_button.xml
@@ -1,24 +1,25 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<split_button 
+<split_button
  font="SansSerifSmall"
  arrow_position="left"
  follows="right|top">
-    <split_button.arrow_button 
-     name="Arrow Button"
-     label=""
-     font="SansSerifSmall"
-     scale_image="true"
-     image_selected="camera_presets/camera_presets_arrow.png"
-     image_unselected="camera_presets/camera_presets_arrow.png"
-     image_disabled_selected="camera_presets/camera_presets_arrow.png" 
-     image_disabled="camera_presets/camera_presets_arrow.png"
-     width="10"/>
     <split_button.items_panel
      background_visible="true"
      border="true"
      bg_alpha_color="1 1 1 1"
      bg_opaq_color="1 1 1 1"
+     scale_image="false"
+     image_selected="SegmentedBtn_Left_Selected"
+     image_unselected="SegmentedBtn_Left_Off"
      layout="topleft"
      name="item_buttons"
     />
+    <split_button.arrow_button
+     name="Arrow Button"
+     label=""
+     font="SansSerifSmall"
+     scale_image="false"
+     image_selected="SegmentedBtn_Right_Selected"
+     image_unselected="SegmentedBtn_Right_Off"
+     />
 </split_button>
diff --git a/install.xml b/install.xml
index 519f8138f5eed3944238be51f36ce2b2dd8c8fb7..8e5c7e7ae4f6087e82c31d80182d325e82864c86 100644
--- a/install.xml
+++ b/install.xml
@@ -955,9 +955,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>5e91fba63006aa5e6266496cf7497100</string>
+            <string>0d8aab394b4dc00aae44b4ada50c2d9f</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20090819a.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091027.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>