diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
index f9624852843c6a41cd6b35ede7cd4d03a69ff88b..8276ec836a77399ed164ff02d4ec65a3286aafb5 100755
--- a/indra/llcommon/llsd.cpp
+++ b/indra/llcommon/llsd.cpp
@@ -506,8 +506,6 @@ namespace
 
 		LLSD::array_iterator beginArray() { return mData.begin(); }
 		LLSD::array_iterator endArray() { return mData.end(); }
-		LLSD::reverse_array_iterator rbeginArray() { return mData.rbegin(); }
-		LLSD::reverse_array_iterator rendArray() { return mData.rend(); }
 		virtual LLSD::array_const_iterator beginArray() const { return mData.begin(); }
 		virtual LLSD::array_const_iterator endArray() const { return mData.end(); }
 
@@ -949,9 +947,6 @@ LLSD::array_iterator		LLSD::endArray()		{ return makeArray(impl).endArray(); }
 LLSD::array_const_iterator	LLSD::beginArray() const{ return safe(impl).beginArray(); }
 LLSD::array_const_iterator	LLSD::endArray() const	{ return safe(impl).endArray(); }
 
-LLSD::reverse_array_iterator	LLSD::rbeginArray()		{ return makeArray(impl).rbeginArray(); }
-LLSD::reverse_array_iterator	LLSD::rendArray()		{ return makeArray(impl).rendArray(); }
-
 namespace llsd
 {
 
diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h
index a3792c1f9da3aaaa48b1023688cceca34af17f72..5eb69059ac6e5f41e4f76504f6d081419652766f 100755
--- a/indra/llcommon/llsd.h
+++ b/indra/llcommon/llsd.h
@@ -320,15 +320,11 @@ public:
 		
 		typedef std::vector<LLSD>::iterator			array_iterator;
 		typedef std::vector<LLSD>::const_iterator	array_const_iterator;
-		typedef std::vector<LLSD>::reverse_iterator reverse_array_iterator;
-
+		
 		array_iterator			beginArray();
 		array_iterator			endArray();
 		array_const_iterator	beginArray() const;
 		array_const_iterator	endArray() const;
-
-		reverse_array_iterator	rbeginArray();
-		reverse_array_iterator	rendArray();
 	//@}
 	
 	/** @name Type Testing */
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index bb17725c9cb9ced6a6dd1d95ee96b437b0541a63..0730b2ed8b8cb30d26f7a3eb857eee6e932f3df2 100755
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -114,9 +114,6 @@ static const F32 MEM_INFO_THROTTLE = 20;
 static const F32 MEM_INFO_WINDOW = 10*60;
 
 #if LL_WINDOWS
-// We cannot trust GetVersionEx function on Win8.1 , we should check this value when creating OS string
-static const U32 WINNT_WINBLUE = 0x0603;
-
 #ifndef DLLVERSIONINFO
 typedef struct _DllVersionInfo
 {
@@ -217,26 +214,6 @@ static bool regex_search_no_exc(const S& string, M& match, const R& regex)
     }
 }
 
-#if LL_WINDOWS
-// GetVersionEx should not works correct with Windows 8.1 and the later version. We need to check this case 
-static bool	check_for_version(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
-{
-    OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
-    DWORDLONG        const dwlConditionMask = VerSetConditionMask(
-        VerSetConditionMask(
-        VerSetConditionMask(
-            0, VER_MAJORVERSION, VER_GREATER_EQUAL),
-               VER_MINORVERSION, VER_GREATER_EQUAL),
-               VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
-
-    osvi.dwMajorVersion = wMajorVersion;
-    osvi.dwMinorVersion = wMinorVersion;
-    osvi.wServicePackMajor = wServicePackMajor;
-
-    return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
-}
-#endif
-
 
 LLOSInfo::LLOSInfo() :
 	mMajorVer(0), mMinorVer(0), mBuild(0), mOSVersionString("")	 
@@ -245,7 +222,6 @@ LLOSInfo::LLOSInfo() :
 #if LL_WINDOWS
 	OSVERSIONINFOEX osvi;
 	BOOL bOsVersionInfoEx;
-	BOOL bShouldUseShellVersion = false;
 
 	// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
 	ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
@@ -308,18 +284,10 @@ LLOSInfo::LLOSInfo() :
 				}
 				else if(osvi.dwMinorVersion == 2)
 				{
-					if (check_for_version(HIBYTE(WINNT_WINBLUE), LOBYTE(WINNT_WINBLUE), 0))
-					{
-						mOSStringSimple = "Microsoft Windows 8.1 ";
-						bShouldUseShellVersion = true; // GetVersionEx failed, going to use shell version
-					}
+					if(osvi.wProductType == VER_NT_WORKSTATION)
+						mOSStringSimple = "Microsoft Windows 8 ";
 					else
-					{
-						if(osvi.wProductType == VER_NT_WORKSTATION)
-							mOSStringSimple = "Microsoft Windows 8 ";
-						else
-							mOSStringSimple = "Windows Server 2012 ";
-					}
+						mOSStringSimple = "Windows Server 2012 ";
 				}
 
 				///get native system info if available..
@@ -386,8 +354,9 @@ LLOSInfo::LLOSInfo() :
 			}
 			else
 			{
-				tmpstr = !bShouldUseShellVersion ?  llformat("%s (Build %d)", csdversion.c_str(), (osvi.dwBuildNumber & 0xffff)):
-					llformat("%s (Build %d)", csdversion.c_str(), shell32_build);
+				tmpstr = llformat("%s (Build %d)",
+								  csdversion.c_str(),
+								  (osvi.dwBuildNumber & 0xffff));
 			}
 
 			mOSString = mOSStringSimple + tmpstr;
@@ -423,7 +392,7 @@ LLOSInfo::LLOSInfo() :
 	std::string compatibility_mode;
 	if(got_shell32_version)
 	{
-		if((osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor) && !bShouldUseShellVersion)
+		if(osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor)
 		{
 			compatibility_mode = llformat(" compatibility mode. real ver: %d.%d (Build %d)", 
 											shell32_major,
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 5eb5fb442d0f958860de8691e7e54541c46c66bd..37c603348e3342a1ed9191e72cffcf47d125cc04 100755
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -414,6 +414,117 @@ BOOL LLParcel::allowTerraformBy(const LLUUID &agent_id) const
 }
 
 
+bool LLParcel::isAgentBlockedFromParcel(LLParcel* parcelp,
+                                        const LLUUID& agent_id,
+                                        const uuid_vec_t& group_ids,
+                                        const BOOL is_agent_identified,
+                                        const BOOL is_agent_transacted,
+                                        const BOOL is_agent_ageverified)
+{
+    S32 current_group_access = parcelp->blockAccess(agent_id, LLUUID::null, is_agent_identified, is_agent_transacted, is_agent_ageverified);
+    S32 count;
+    bool is_allowed = (current_group_access == BA_ALLOWED) ? true: false;
+    LLUUID group_id;
+    
+    count = group_ids.size();
+    for (int i = 0; i < count && !is_allowed; i++)
+    {
+        group_id = group_ids[i];
+        current_group_access = parcelp->blockAccess(agent_id, group_id, is_agent_identified, is_agent_transacted, is_agent_ageverified);
+        
+        if (current_group_access == BA_ALLOWED) is_allowed = true;
+    }
+    
+    return !is_allowed;
+}
+
+BOOL LLParcel::isAgentBanned(const LLUUID& agent_id) const
+{
+	// Test ban list
+	if (mBanList.find(agent_id) != mBanList.end())
+	{
+		return TRUE;
+	}
+    
+    return FALSE;
+}
+
+S32 LLParcel::blockAccess(const LLUUID& agent_id, const LLUUID& group_id,
+                          const BOOL is_agent_identified,
+                          const BOOL is_agent_transacted,
+                          const BOOL is_agent_ageverified) const
+{
+    // Test ban list
+    if (isAgentBanned(agent_id))
+    {
+        return BA_BANNED;
+    }
+    
+    // Always allow owner on (unless he banned himself, useful for
+    // testing). We will also allow estate owners/managers in if they 
+    // are not explicitly banned.
+    if (agent_id == mOwnerID)
+    {
+        return BA_ALLOWED;
+    }
+    
+    // Special case when using pass list where group access is being restricted but not 
+    // using access list.	 In this case group members are allowed only if they buy a pass.
+    // We return BA_NOT_IN_LIST if not in list
+    BOOL passWithGroup = getParcelFlag(PF_USE_PASS_LIST) && !getParcelFlag(PF_USE_ACCESS_LIST) 
+    && getParcelFlag(PF_USE_ACCESS_GROUP) && !mGroupID.isNull() && group_id == mGroupID;
+    
+    
+    // Test group list
+    if (getParcelFlag(PF_USE_ACCESS_GROUP)
+        && !mGroupID.isNull()
+        && group_id == mGroupID
+        && !passWithGroup)
+    {
+        return BA_ALLOWED;
+    }
+    
+    // Test access list
+    if (getParcelFlag(PF_USE_ACCESS_LIST) || passWithGroup )
+    {
+        if (mAccessList.find(agent_id) != mAccessList.end())
+        {
+            return BA_ALLOWED;
+        }
+        
+        return BA_NOT_ON_LIST; 
+    }
+    
+    // If we're not doing any other limitations, all users
+    // can enter, unless
+    if (		 !getParcelFlag(PF_USE_ACCESS_GROUP)
+                 && !getParcelFlag(PF_USE_ACCESS_LIST))
+    { 
+        //If the land is group owned, and you are in the group, bypass these checks
+        if(getIsGroupOwned() && group_id == mGroupID)
+        {
+            return BA_ALLOWED;
+        }
+        
+        // Test for "payment" access levels
+        // Anonymous - No Payment Info on File
+        if(getParcelFlag(PF_DENY_ANONYMOUS) && !is_agent_identified && !is_agent_transacted)
+        {
+            return BA_NO_ACCESS_LEVEL;
+        }
+        // AgeUnverified - Not Age Verified
+        if(getParcelFlag(PF_DENY_AGEUNVERIFIED) && !is_agent_ageverified)
+        {
+			return BA_NOT_AGE_VERIFIED;
+        }
+    
+        return BA_ALLOWED;
+    }
+    
+    return BA_NOT_IN_GROUP;
+    
+}
+
 
 void LLParcel::setArea(S32 area, S32 sim_object_limit)
 {
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index c4363a48df5151bc3b73e9b9bfdec97a9f9b25c1..0279e8bef970371595250a794c2bfc79bee03ded 100755
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -527,6 +527,23 @@ public:
 	// Can this agent change the shape of the land?
 	BOOL	allowTerraformBy(const LLUUID &agent_id) const;
 
+	// Returns 0 if access is OK, otherwise a BA_ return code above.
+	S32	 blockAccess(const LLUUID& agent_id, 
+			const LLUUID& group_id, 
+			const BOOL is_agent_identified, 
+			const BOOL is_agent_transacted,
+			const BOOL is_agent_ageverified) const;
+
+	// Only checks if the agent is explicitly banned from this parcel
+	BOOL isAgentBanned(const LLUUID& agent_id) const;
+
+	static bool isAgentBlockedFromParcel(LLParcel* parcelp, 
+									const LLUUID& agent_id,
+									const uuid_vec_t& group_ids,
+									const BOOL is_agent_identified,
+									const BOOL is_agent_transacted,
+									const BOOL is_agent_ageverified);
+
 	bool	operator==(const LLParcel &rhs) const;
 
 	// Calculate rent - area * rent * discount rate
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index f74c934b21fdaf0a0dd03d816fb6e0d0301eb03f..2b865b4a8eff6a77c77edee8384c7229810c570d 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -166,8 +166,7 @@ void calc_tangent_from_triangle(
 
 	F32 rd = s1*t2-s2*t1;
 
-	float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
-											    : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
+	float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
 
 	llassert(llfinite(r));
 	llassert(!llisnan(r));
@@ -6790,8 +6789,7 @@ void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVe
         
 		F32 rd = s1*t2-s2*t1;
 
-		float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
-													 : ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
+		float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
 
 		llassert(llfinite(r));
 		llassert(!llisnan(r));
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 56be52f69abf317403f28d8bd3277000b1a59313..d4e14d94190bcaa4d5d8c4867b8f8737d94cfc8c 100755
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -534,13 +534,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
 	}
 }
 
-void LLComboBox::setLeftTextPadding(S32 pad)
-{
-	S32 left_pad, right_pad;
-	mTextEntry->getTextPadding(&left_pad, &right_pad);
-	mTextEntry->setTextPadding(pad, right_pad);
-}
-
 void* LLComboBox::getCurrentUserdata()
 {
 	LLScrollListItem* item = mList->getFirstSelected();
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 1e04fb08669aece9890daa89ff1c696f8f14a585..64dbaea30634d1d6cb95f88a397de45b907b3187 100755
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -190,8 +190,6 @@ public:
 	virtual BOOL	operateOnAll(EOperation op);
 
 	//========================================================================
-
-	void			setLeftTextPadding(S32 pad);
 	
 	void*			getCurrentUserdata();
 
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index ab37ee48b621cf381597d9c2647ef8a6720408bc..625fb8e87024c7cfc5f2a8d646737dabe181be76 100755
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -50,7 +50,6 @@ const LLCommandId LLCommandId::null = LLCommandId("null command");
 LLCommand::Params::Params()
 	: available_in_toybox("available_in_toybox", false)
 	, icon("icon")
-	, hover_icon("hover_icon")
 	, label_ref("label_ref")
 	, name("name")
 	, tooltip_ref("tooltip_ref")
@@ -72,7 +71,6 @@ LLCommand::LLCommand(const LLCommand::Params& p)
 	: mIdentifier(p.name)
 	, mAvailableInToybox(p.available_in_toybox)
 	, mIcon(p.icon)
-	, mHoverIcon(p.hover_icon)
 	, mLabelRef(p.label_ref)
 	, mName(p.name)
 	, mTooltipRef(p.tooltip_ref)
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 47a9b86785d4e53c3aabbfe6bcf8dbbf0a4faa39..ff5a8a325738b1c9a511cbd3df93b96683c357ca 100755
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -96,8 +96,6 @@ public:
 		Mandatory<std::string>	name;
 		Mandatory<std::string>	tooltip_ref;
 
-		Optional<std::string>   hover_icon;
-
 		Mandatory<std::string>	execute_function;
 		Optional<LLSD>			execute_parameters;
 
@@ -126,7 +124,6 @@ public:
 	const std::string& labelRef() const { return mLabelRef; }
 	const std::string& name() const { return mName; }
 	const std::string& tooltipRef() const { return mTooltipRef; }
-	const std::string& hoverIcon() const {return mHoverIcon; }
 
 	const std::string& executeFunctionName() const { return mExecuteFunction; }
 	const LLSD& executeParameters() const { return mExecuteParameters; }
@@ -153,7 +150,6 @@ private:
 	std::string mLabelRef;
 	std::string mName;
 	std::string mTooltipRef;
-	std::string mHoverIcon;
 
 	std::string mExecuteFunction;
 	LLSD        mExecuteParameters;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index edc730ef14b5f2ebbacb1917cc1dc15aa40b458d..182c5cfd8acf731f16cf77690004349af0c7ec13 100755
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -509,8 +509,8 @@ LLFloater::~LLFloater()
 	
 	if( gFocusMgr.childHasKeyboardFocus(this))
 	{
-		// Just in case we might still have focus here, release it.
-		releaseFocus();
+	// Just in case we might still have focus here, release it.
+	releaseFocus();
 	}
 
 	// This is important so that floaters with persistent rects (i.e., those
@@ -1821,7 +1821,7 @@ void LLFloater::onClickClose( LLFloater* self )
 	self->onClickCloseBtn();
 }
 
-void LLFloater::onClickCloseBtn(bool app_quitting)
+void	LLFloater::onClickCloseBtn()
 {
 	closeFloater(false);
 }
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 75715ef296b03a26c5b482d55415dba4065f118a..953689498f28bbbe0c233c059239a80f21affb69 100755
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -390,7 +390,7 @@ protected:
 
 	void			destroy(); // Don't call this directly.  You probably want to call closeFloater()
 
-	virtual	void	onClickCloseBtn(bool app_quitting = false);
+	virtual	void	onClickCloseBtn();
 
 	virtual void	updateTitleButtons();
 
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp
index ff85b0ad090fc6f636dc85904b7b4f3cd0ab0479..8c2be449045f563a837530eba4d6abb30d366eb7 100755
--- a/indra/llui/llmodaldialog.cpp
+++ b/indra/llui/llmodaldialog.cpp
@@ -34,7 +34,7 @@
 #include "llui.h"
 #include "llwindow.h"
 #include "llkeyboard.h"
-#include "llmenugl.h"
+
 // static
 std::list<LLModalDialog*> LLModalDialog::sModalStack;
 
@@ -161,18 +161,6 @@ void LLModalDialog::setVisible( BOOL visible )
 
 BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
 {
-	LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
-	if (popup_menu != NULL)
-	{
-		S32 mx, my;
-		LLUI::getMousePositionScreen(&mx, &my);
-		LLRect menu_screen_rc = popup_menu->calcScreenRect();
-		if(!menu_screen_rc.pointInRect(mx, my))
-		{
-			LLMenuGL::sMenuContainer->hideMenus();
-		}
-	}
-
 	if (mModal)
 	{
 		if (!LLFloater::handleMouseDown(x, y, mask))
@@ -185,34 +173,16 @@ BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
 	{
 		LLFloater::handleMouseDown(x, y, mask);
 	}
-
-
 	return TRUE;
 }
 
 BOOL LLModalDialog::handleHover(S32 x, S32 y, MASK mask)		
-{
+{ 
 	if( childrenHandleHover(x, y, mask) == NULL )
 	{
 		getWindow()->setCursor(UI_CURSOR_ARROW);
-		lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl;
+		lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl;		
 	}
-
-	LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
-	if (popup_menu != NULL)
-	{
-		S32 mx, my;
-		LLUI::getMousePositionScreen(&mx, &my);
-		LLRect menu_screen_rc = popup_menu->calcScreenRect();
-		if(menu_screen_rc.pointInRect(mx, my))
-		{
-			S32 local_x = mx - popup_menu->getRect().mLeft;
-			S32 local_y = my - popup_menu->getRect().mBottom;
-			popup_menu->handleHover(local_x, local_y, mask);
-			gFocusMgr.setMouseCapture(NULL);
-		}
-	}
-
 	return TRUE;
 }
 
@@ -240,7 +210,6 @@ BOOL LLModalDialog::handleDoubleClick(S32 x, S32 y, MASK mask)
 
 BOOL LLModalDialog::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
-	LLMenuGL::sMenuContainer->hideMenus();
 	childrenHandleRightMouseDown(x, y, mask);
 	return TRUE;
 }
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index 238eae21c25f6366e63dc24f0e8a1c39015f670d..cbcce0ece545fa7e7617fa5ad6f3f4a1127da877 100755
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
@@ -519,7 +519,7 @@ bool LLScrollContainer::addChild(LLView* view, S32 tab_group)
 
 void LLScrollContainer::updateScroll()
 {
-	if (!getVisible() || !mScrolledView)
+	if (!mScrolledView)
 	{
 		return;
 	}
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 615796f55593f30ade964f46263b8e59d234dfb9..76ba53ec329e600084424a110695f7924edc709b 100755
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -193,15 +193,12 @@ LLTabContainer::TabParams::TabParams()
 :	tab_top_image_unselected("tab_top_image_unselected"),
 	tab_top_image_selected("tab_top_image_selected"),
 	tab_top_image_flash("tab_top_image_flash"),
-	tab_top_image_hovered("tab_top_image_hovered"),
 	tab_bottom_image_unselected("tab_bottom_image_unselected"),
 	tab_bottom_image_selected("tab_bottom_image_selected"),
 	tab_bottom_image_flash("tab_bottom_image_flash"),
-	tab_bottom_image_hovered("tab_bottom_image_hovered"),
 	tab_left_image_unselected("tab_left_image_unselected"),
 	tab_left_image_selected("tab_left_image_selected"),
-	tab_left_image_flash("tab_left_image_flash"),
-	tab_left_image_hovered("tab_left_image_hovered")
+	tab_left_image_flash("tab_left_image_flash")
 {}
 
 LLTabContainer::Params::Params()
@@ -221,8 +218,7 @@ LLTabContainer::Params::Params()
 	open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false),
 	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
 	use_ellipses("use_ellipses"),
-	font_halign("halign"),
-	use_highlighting_on_hover("use_highlighting_on_hover",false)
+	font_halign("halign")
 {}
 
 LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
@@ -258,8 +254,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
 	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
 	mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),
 	mTabIconCtrlPad(p.tab_icon_ctrl_pad),
-	mUseTabEllipses(p.use_ellipses),
-	mUseHighlightingOnHover(p.use_highlighting_on_hover)
+	mUseTabEllipses(p.use_ellipses)
 {
 	static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0);
 
@@ -908,30 +903,18 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_top_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_top_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_top_image_flash));
-			if(mUseHighlightingOnHover)
-			{
-				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_top_image_hovered));
-			}
 		}
 		else if (pos == LLTabContainer::BOTTOM)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_bottom_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_bottom_image_flash));
-			if(mUseHighlightingOnHover)
-			{
-				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_hovered));
-			}
 		}
 		else if (pos == LLTabContainer::LEFT)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_left_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_left_image_selected));
 			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_left_image_flash));
-			if(mUseHighlightingOnHover)
-			{
-				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_left_image_hovered));
-			}
 		}
 	}
 }
@@ -1089,20 +1072,20 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 		if (mIsVertical)
 		{
 		  p.name("vtab_"+std::string(child->getName()));
-			p.image_unselected(mMiddleTabParams.tab_left_image_unselected);
-			p.image_selected(mMiddleTabParams.tab_left_image_selected);
-			p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
+		  p.image_unselected(mMiddleTabParams.tab_left_image_unselected);
+		  p.image_selected(mMiddleTabParams.tab_left_image_selected);
+		  p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
 		}
 		else
-		{
+		  { 
 		    p.name("htab_"+std::string(child->getName()));
-			p.visible(false);
-			p.image_unselected(tab_img);
-			p.image_selected(tab_selected_img);
-			p.follows.flags = p.follows.flags() | (getTabPosition() == TOP ? FOLLOWS_TOP : FOLLOWS_BOTTOM);
-			// Try to squeeze in a bit more text
-			p.pad_left( mLabelPadLeft );
-			p.pad_right(2);
+		    p.visible(false);
+		    p.image_unselected(tab_img);
+		    p.image_selected(tab_selected_img);
+		    p.follows.flags = p.follows.flags() | (getTabPosition() == TOP ? FOLLOWS_TOP : FOLLOWS_BOTTOM);
+		    // Try to squeeze in a bit more text
+		    p.pad_left( mLabelPadLeft );
+		    p.pad_right(2);
 		}
 		
 		// *TODO : It seems wrong not to use p in both cases considering the way p is initialized
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 7e7d4ac6e6d22b942c7645eb8a10e69a933cea3a..57862fc626c0374c49a863a238836b0d4963553e 100755
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -62,15 +62,12 @@ public:
 		Optional<LLUIImage*>				tab_top_image_unselected,
 											tab_top_image_selected,
 											tab_top_image_flash,
-											tab_top_image_hovered,
 											tab_bottom_image_unselected,
 											tab_bottom_image_selected,
 											tab_bottom_image_flash,
-											tab_bottom_image_hovered,
 											tab_left_image_unselected,
 											tab_left_image_selected,
-											tab_left_image_flash,
-											tab_left_image_hovered;
+											tab_left_image_flash;		
 		TabParams();
 	};
 
@@ -117,11 +114,6 @@ public:
 		 */
 		Optional<S32>						tab_icon_ctrl_pad;
 
-		/**
-		 *  This variable is used to found out should we highlight tab button on hover
-		*/
-		Optional<bool>						use_highlighting_on_hover;
-
 		Params();
 	};
 
@@ -315,7 +307,6 @@ private:
 	bool							mOpenTabsOnDragAndDrop;
 	S32								mTabIconCtrlPad;
 	bool							mUseTabEllipses;
-	bool                            mUseHighlightingOnHover;
 };
 
 #endif  // LL_TABCONTAINER_H
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 7f309a5ff6bbae763a1eb62df0cc823acfcd375a..0c16e06109fbd51b21eea8484785201adcc9d978 100755
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -666,14 +666,6 @@ void LLTextEditor::selectAll()
 	updatePrimary();
 }
 
-void LLTextEditor::selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos)
-{
-	setCursorPos(prev_cursor_pos);
-	startSelection();
-	setCursorPos(next_cursor_pos);
-	endSelection();
-}
-
 BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL	handled = FALSE;
@@ -721,6 +713,7 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 				setCursorAtLocalPos( x, y, true );
 				startSelection();
 			}
+			gFocusMgr.setMouseCapture( this );
 		}
 
 		handled = TRUE;
@@ -729,10 +722,6 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
 	// Delay cursor flashing
 	resetCursorBlink();
 
-	if (handled)
-	{
-		gFocusMgr.setMouseCapture( this );
-	}
 	return handled;
 }
 
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index d3b7bc0eb7681ef04c31155ee3561496a9896b48..32b543ec0e3439380847c001ee18f4cefb3dece0 100755
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -144,8 +144,6 @@ public:
 	virtual void	selectAll();
 	virtual BOOL	canSelectAll()	const;
 
-	void 			selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos);
-
 	virtual bool	canLoadOrSaveToFile();
 
 	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 75f52b8e3427b57ec8c6fdc5f2adb45dfb240ee3..928e82cb8c21c798e2cdb1744270ababa2b7012c 100755
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -928,7 +928,6 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
 	button_p.label = LLTrans::getString(commandp->labelRef());
 	button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());
 	button_p.image_overlay = LLUI::getUIImage(commandp->icon());
-	button_p.image_hover_unselected = LLUI::getUIImage(commandp->hoverIcon());
 	button_p.button_flash_enable = commandp->isFlashingAllowed();
 	button_p.overwriteFrom(mButtonParams[mButtonType]);
 	LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 6a33ce105dc4b0bc5f3aaa2b6836817e2c3b15cb..60c942094aad44fcc98f66c0a29ae3da1975dfd2 100755
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -13,7 +13,6 @@
   <command name="appearance"  
            available_in_toybox="true"
            icon="Command_Appearance_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Appearance_Label"
            tooltip_ref="Command_Appearance_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -24,7 +23,6 @@
   <command name="avatar"
            available_in_toybox="true"
            icon="Command_Avatar_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Avatar_Label"
            tooltip_ref="Command_Avatar_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -96,7 +94,6 @@
   <command name="inventory"
            available_in_toybox="true"
            icon="Command_Inventory_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Inventory_Label"
            tooltip_ref="Command_Inventory_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -124,7 +121,6 @@
   <command name="minimap"
            available_in_toybox="true"
            icon="Command_MiniMap_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_MiniMap_Label"
            tooltip_ref="Command_MiniMap_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -175,7 +171,6 @@
   <command name="places"
            available_in_toybox="true"
            icon="Command_Places_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Places_Label"
            tooltip_ref="Command_Places_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -204,7 +199,6 @@
   <command name="search"
            available_in_toybox="true"
            icon="Command_Search_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Search_Label"
            tooltip_ref="Command_Search_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
@@ -215,7 +209,6 @@
   <command name="snapshot"
            available_in_toybox="true"
            icon="Command_Snapshot_Icon"
-           hover_icon="Command_Highlighting_Icon"
            label_ref="Command_Snapshot_Label"
            tooltip_ref="Command_Snapshot_Tooltip"
            execute_function="Floater.ToggleOrBringToFront"
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1c532e957e01ede6b56a15272168a36953004afb..41aac583d7661a270e4de4287efac459473dc1cd 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5942,17 +5942,6 @@
       <key>Value</key>
       <real>1.6</real>
     </map>
-    <key>MaxPersistentNotifications</key>
-    <map>
-      <key>Comment</key>
-      <string>Maximum amount of persistent notifications</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <real>250</real>
-    </map>
     <key>MaxSelectDistance</key>
     <map>
       <key>Comment</key>
@@ -13345,7 +13334,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>0</string>
+      <string>-1</string>
     </map>
     <key>VivoxDebugSIPURIHostName</key>
     <map>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index 500151c935277b05d2d5d04ddf64f93bf9273945..636caf5ef321cd69a50cb381609e6745ab26889f 100755
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -77,17 +77,6 @@
         <key>Value</key>
             <integer>412</integer>
     </map>
-    <key>ConversationsParticipantListCollapsed</key>
-    <map>
-        <key>Comment</key>
-            <string>Stores the expanded/collapsed state of Nearby chat participant list</string>
-        <key>Persist</key>
-            <integer>1</integer>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>true</integer>
-    </map>   
     <key>InstantMessageLogPath</key>
         <map>
         <key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
index 3df4d333ce0d334e9edac7848a661dda13025a99..c98e7d1cd3779310fa90f239d176da122d91f5c6 100755
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
@@ -31,11 +31,9 @@ uniform vec4 matrixPalette[45];
 mat4 getSkinnedTransform()
 {
 	mat4 ret;
-	
-	float x = fract(weight.x);
 	int i = int(floor(weight.x));
-		i = min(i, 15);
-		i = max(i, 0);
+	float x = fract(weight.x);
+	
 	ret[0] = mix(matrixPalette[i+0], matrixPalette[i+1],  x);
 	ret[1] = mix(matrixPalette[i+15],matrixPalette[i+16], x);
 	ret[2] = mix(matrixPalette[i+30],matrixPalette[i+31], x);
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 12996cf0d60b848d3e2f1892f673ad913aae1979..271947b2dd6dbd51c80fb969458fd126161b204c 100755
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -35,9 +35,6 @@ mat4 getObjectSkinnedTransform()
 	vec4 w = fract(weight4);
 	vec4 index = floor(weight4);
 
-		 index = min(index, vec4(31.0));
-		 index = max(index, vec4( 0.0));
-
 	float scale = 1.0/(w.x+w.y+w.z+w.w);
 	w *= scale;
 
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 325707bbf1f5bbe8a91075631101154d4f4d00ec..9cee0aa8673cb201129bdb2a26e5d6a8f5563352 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1092,18 +1092,10 @@ const LLVector3d &LLAgent::getPositionGlobal() const
 //-----------------------------------------------------------------------------
 const LLVector3 &LLAgent::getPositionAgent()
 {
-	if (isAgentAvatarValid())
-	{
-		if(gAgentAvatarp->mDrawable.isNull())
-		{
-			mFrameAgent.setOrigin(gAgentAvatarp->getPositionAgent());
-		}
-		else
+	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())
 		{
 			mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());
 		}
-	}
-
 
 	return mFrameAgent.getOrigin();
 }
diff --git a/indra/newview/llblocklist.cpp b/indra/newview/llblocklist.cpp
index ac41b26a3472dcc9f75aed0a3476a34fd3672412..066cb71677a810488557f1594ff32806256c66cd 100755
--- a/indra/newview/llblocklist.cpp
+++ b/indra/newview/llblocklist.cpp
@@ -41,14 +41,10 @@ static const LLBlockListNameTypeComparator	NAME_TYPE_COMPARATOR;
 LLBlockList::LLBlockList(const Params& p)
 :	LLFlatListViewEx(p),
  	mSelectedItem(NULL),
- 	mDirty(true),
-	mShouldAddAll(true),
-	mActionType(NONE),
-	mMuteListSize(0)
+ 	mDirty(true)
 {
 
 	LLMuteList::getInstance()->addObserver(this);
-	mMuteListSize = LLMuteList::getInstance()->getMutes().size();
 
 	// Set up context menu.
 	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
@@ -77,41 +73,6 @@ LLBlockList::~LLBlockList()
 	LLMuteList::getInstance()->removeObserver(this);
 }
 
-void LLBlockList::createList()
-{
-	std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
-	std::vector<LLMute>::const_iterator mute_it = mutes.begin();
-
-	for (; mute_it != mutes.end(); ++mute_it)
-	{
-		addNewItem(&*mute_it);
-	}
-}
-
-BlockListActionType LLBlockList::getCurrentMuteListActionType()
-{
-	BlockListActionType type = NONE;
-	U32 curSize = LLMuteList::getInstance()->getMutes().size();
-	if( curSize > mMuteListSize)
-		type = ADD;
-	else if(curSize < mMuteListSize)
-		type = REMOVE;
-
-	return type;
-}
-
-void LLBlockList::onChangeDetailed(const LLMute &mute)
-{
-	mActionType = getCurrentMuteListActionType();
-
-	mCurItemId = mute.mID;
-	mCurItemName = mute.mName;
-	mCurItemType = mute.mType;
-	mCurItemFlags = mute.mFlags;
-
-	refresh();
-}
-
 BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
@@ -127,16 +88,6 @@ BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	return handled;
 }
 
-void LLBlockList::removeListItem(const LLMute* mute)
-{
-	removeItemByUUID(mute->mID);
-}
-
-void LLBlockList::hideListItem(LLBlockedListItem* item, bool show)
-{
-	item->setVisible(show);
-}
-
 void LLBlockList::setNameFilter(const std::string& filter)
 {
 	std::string filter_upper = filter;
@@ -185,56 +136,28 @@ void LLBlockList::refresh()
 	bool have_filter = !mNameFilter.empty();
 
 	// save selection to restore it after list rebuilt
-	LLUUID selected = getSelectedUUID(), next_selected;
+	LLUUID selected = getSelectedUUID();
 
-	if(mShouldAddAll)	// creating list of blockers
+	// calling refresh may be initiated by removing currently selected item
+	// so select next item and save the selection to restore it after list rebuilt
+	if (!selectNextItemPair(false, true))
 	{
-		clear();
-		createList();
-		mShouldAddAll = false;
-	}
-	else
-	{
-		// handle remove/add functionality
-		LLMute mute(mCurItemId, mCurItemName, mCurItemType, mCurItemFlags);
-		if(mActionType == ADD)
-		{
-			addNewItem(&mute);
-		}
-		else if(mActionType == REMOVE)
-		{
-			if(selected == mute.mID)
-			{
-				// we are going to remove currently selected item, so select next item and save the selection to restore it
-				if (!selectNextItemPair(false, true))
-				{
-					selectNextItemPair(true, true);
-				}
-				next_selected = getSelectedUUID();
-			}
-			removeListItem(&mute);
-		}
-		mActionType = NONE;
+		selectNextItemPair(true, true);
 	}
+	LLUUID next_selected = getSelectedUUID();
+
+	clear();
+
+	std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
+	std::vector<LLMute>::const_iterator mute_it = mutes.begin();
 
-	// handle filter functionality
-	if(have_filter || (!have_filter && !mPrevNameFilter.empty()))
+	for (; mute_it != mutes.end(); ++mute_it)
 	{
-		// we should update visibility of our items if previous filter was not empty
-		std::vector < LLPanel* > allItems;
-		getItems(allItems);
-		std::vector < LLPanel* >::iterator it = allItems.begin();
+		if (have_filter && !findInsensitive(mute_it->mName, mNameFilter))
+			continue;
 
-		for(; it != allItems.end() ; ++it)
-		{
-			LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
-			if(curItem)
-			{
-				hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
-			}
-		}
+		addNewItem(&*mute_it);
 	}
-	mPrevNameFilter = mNameFilter;
 
 	if (getItemPair(selected))
 	{
@@ -246,7 +169,6 @@ void LLBlockList::refresh()
 		// previously selected item was removed, so select next item
 		selectItemPair(getItemPair(next_selected), true);
 	}
-	mMuteListSize = LLMuteList::getInstance()->getMutes().size();
 
 	// Sort the list.
 	sort();
diff --git a/indra/newview/llblocklist.h b/indra/newview/llblocklist.h
index b1ea7e98e56804101b7f7f688104401e8dafed44..1a215710f463ade3bf5d1f6edee32e808e4761dd 100755
--- a/indra/newview/llblocklist.h
+++ b/indra/newview/llblocklist.h
@@ -34,8 +34,6 @@
 class LLBlockedListItem;
 class LLMute;
 
-enum BlockListActionType {NONE, ADD, REMOVE};
-
 /**
  * List of blocked avatars and objects.
  * This list represents contents of the LLMuteList.
@@ -58,8 +56,7 @@ public:
 	LLToggleableMenu*	getContextMenu() const { return mContextMenu.get(); }
 	LLBlockedListItem*	getBlockedItem() const;
 
-	virtual void onChange() { }
-	virtual void onChangeDetailed(const LLMute& );
+	virtual void onChange() { refresh(); }
 	virtual void draw();
 
 	void setNameFilter(const std::string& filter);
@@ -70,32 +67,18 @@ public:
 private:
 
 	void addNewItem(const LLMute* mute);
-	void removeListItem(const LLMute* mute);
-	void hideListItem(LLBlockedListItem* item, bool show);
 	void setDirty(bool dirty = true) { mDirty = dirty; }
 	bool findInsensitive(std::string haystack, const std::string& needle_upper);
 
 	bool isActionEnabled(const LLSD& userdata);
 	void onCustomAction (const LLSD& userdata);
-	void createList();
 
-	BlockListActionType getCurrentMuteListActionType();
-	
+
 	LLHandle<LLToggleableMenu>	mContextMenu;
 
 	LLBlockedListItem*			mSelectedItem;
 	std::string 				mNameFilter;
 	bool 						mDirty;
-	bool						mShouldAddAll;
-	BlockListActionType			mActionType;
-	U32							mMuteListSize;
-
-	// This data is used to save information about item that currently changed(added or removed) 
-	LLUUID						mCurItemId;
-	std::string					mCurItemName;
-	LLMute::EType 				mCurItemType;
-	U32							mCurItemFlags;
-	std::string					mPrevNameFilter;
 
 };
 
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index ae0ac57e761f536107031cf005a8c9930dc9339b..43a733f918725afe2d2f9634f43d517adbc40ed3 100755
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -60,8 +60,6 @@
 #include "llstring.h"
 #include "llurlaction.h"
 #include "llviewercontrol.h"
-#include "llviewerobjectlist.h"
-#include "llmutelist.h"
 
 static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
 
@@ -183,18 +181,6 @@ public:
 		{
 			LLAvatarActions::startIM(getAvatarId());
 		}
-		else if (level == "teleport")
-		{
-			LLAvatarActions::offerTeleport(getAvatarId());
-		}
-		else if (level == "voice_call")
-		{
-			LLAvatarActions::startCall(getAvatarId());
-		}
-		else if (level == "chat_history")
-		{
-			LLAvatarActions::viewChatHistory(getAvatarId());
-		}
 		else if (level == "add")
 		{
 			LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
@@ -203,75 +189,13 @@ public:
 		{
 			LLAvatarActions::removeFriendDialog(getAvatarId());
 		}
-		else if (level == "invite_to_group")
-		{
-			LLAvatarActions::inviteToGroup(getAvatarId());
-		}
-		else if (level == "zoom_in")
-		{
-			handle_zoom_to_object(getAvatarId());
-		}
-		else if (level == "map")
-		{
-			LLAvatarActions::showOnMap(getAvatarId());
-		}
-		else if (level == "share")
-		{
-			LLAvatarActions::share(getAvatarId());
-		}
-		else if (level == "pay")
-		{
-			LLAvatarActions::pay(getAvatarId());
-		}
-		else if(level == "block_unblock")
-		{
-			mute(getAvatarId(), LLMute::flagVoiceChat);
-		}
-		else if(level == "mute_unmute")
-		{
-			mute(getAvatarId(), LLMute::flagTextChat);
-		}
-	}
-
-	bool onAvatarIconContextMenuItemChecked(const LLSD& userdata)
-	{
-		std::string level = userdata.asString();
-
-		if (level == "is_blocked")
-		{
-			return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat);
-		}
-		if (level == "is_muted")
-		{
-			return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat);
-		}
-		return false;
-	}
-
-	void mute(const LLUUID& participant_id, U32 flags)
-	{
-		BOOL is_muted = LLMuteList::getInstance()->isMuted(participant_id, flags);
-		std::string name;
-		gCacheName->getFullName(participant_id, name);
-		LLMute mute(participant_id, name, LLMute::AGENT);
-
-		if (!is_muted)
-		{
-			LLMuteList::getInstance()->add(mute, flags);
-		}
-		else
-		{
-			LLMuteList::getInstance()->remove(mute, flags);
-		}
 	}
 
 	BOOL postBuild()
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
-		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar registrar_enable;
 
 		registrar.add("AvatarIcon.Action", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemClicked, this, _2));
-		registrar_enable.add("AvatarIcon.Check", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemChecked, this, _2));
 		registrar.add("ObjectIcon.Action", boost::bind(&LLChatHistoryHeader::onObjectIconContextMenuItemClicked, this, _2));
 
 		LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_avatar_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
@@ -536,7 +460,7 @@ protected:
 
 		if(menu)
 		{
-			bool is_friend = LLAvatarActions::isFriend(mAvatarID);
+			bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL;
 			
 			menu->setItemEnabled("Add Friend", !is_friend);
 			menu->setItemEnabled("Remove Friend", is_friend);
@@ -546,34 +470,13 @@ protected:
 				menu->setItemEnabled("Add Friend", false);
 				menu->setItemEnabled("Send IM", false);
 				menu->setItemEnabled("Remove Friend", false);
-				menu->setItemEnabled("Offer Teleport",false);
-				menu->setItemEnabled("Voice Call", false);
-				menu->setItemEnabled("Invite Group", false);
-				menu->setItemEnabled("Zoom In", false);
-				menu->setItemEnabled("Share", false);
-				menu->setItemEnabled("Pay", false);
-				menu->setItemEnabled("Block Unblock", false);
-				menu->setItemEnabled("Mute Text", false);
 			}
-			else
+
+			if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
 			{
-				LLUUID currentSessionID = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID);
-				if (mSessionID == currentSessionID)
-				{
-					menu->setItemVisible("Send IM", false);
-				}
-				menu->setItemEnabled("Offer Teleport", LLAvatarActions::canOfferTeleport(mAvatarID));
-				menu->setItemEnabled("Voice Call", LLAvatarActions::canCall());
-
-				// We should only show 'Zoom in' item in a nearby chat
-				bool should_show_zoom = !LLIMModel::getInstance()->findIMSession(currentSessionID);
-				menu->setItemVisible("Zoom In", should_show_zoom && gObjectList.findObject(mAvatarID));	
-				menu->setItemEnabled("Block Unblock", LLAvatarActions::canBlock(mAvatarID));
-				menu->setItemEnabled("Mute Text", LLAvatarActions::canBlock(mAvatarID));
+				menu->setItemVisible("Send IM", false);
 			}
 
-			menu->setItemEnabled("Chat History", LLLogChat::isTranscriptExist(mAvatarID));
-			menu->setItemEnabled("Map", (LLAvatarTracker::instance().isBuddyOnline(mAvatarID) && is_agent_mappable(mAvatarID)) || gAgent.isGodlike() );
 			menu->buildDrawLabels();
 			menu->updateParent(LLMenuGL::sMenuContainer);
 			LLMenuGL::showPopup(this, menu, x, y);
@@ -1065,42 +968,25 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 	// notify processing
 	if (chat.mNotifId.notNull())
 	{
-		bool create_toast = true;
-		for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
-			, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
+		LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
+		if (notification != NULL)
 		{
-			LLToastNotifyPanel& panel = *ti;
-			LLIMToastNotifyPanel * imtoastp = dynamic_cast<LLIMToastNotifyPanel *>(&panel);
-			const std::string& notification_name = panel.getNotificationName();
-			if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled() && imtoastp)
-			{
-				create_toast = false;
-				break;
-			}
-		}
-
-		if (create_toast)
-		{
-			LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
-			if (notification != NULL)
-			{
-				LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
+			LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
 					notification, chat.mSessionID, LLRect::null, !use_plain_text_chat_history, mEditor);
 
-				//Prepare the rect for the view
-				LLRect target_rect = mEditor->getDocumentView()->getRect();
-				// squeeze down the widget by subtracting padding off left and right
-				target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
-				target_rect.mRight -= mRightWidgetPad;
-				notify_box->reshape(target_rect.getWidth(),	notify_box->getRect().getHeight());
-				notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
-
-				LLInlineViewSegment::Params params;
-				params.view = notify_box;
-				params.left_pad = mLeftWidgetPad;
-				params.right_pad = mRightWidgetPad;
-				mEditor->appendWidget(params, "\n", false);
-			}
+			//Prepare the rect for the view
+			LLRect target_rect = mEditor->getDocumentView()->getRect();
+			// squeeze down the widget by subtracting padding off left and right
+			target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
+			target_rect.mRight -= mRightWidgetPad;
+			notify_box->reshape(target_rect.getWidth(),	notify_box->getRect().getHeight());
+			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
+
+			LLInlineViewSegment::Params params;
+			params.view = notify_box;
+			params.left_pad = mLeftWidgetPad;
+			params.right_pad = mRightWidgetPad;
+			mEditor->appendWidget(params, "\n", false);
 		}
 	}
 
@@ -1130,7 +1016,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 		if (square_brackets)
 		{
 			message += "]";
-		}
+	}
 
 		mEditor->appendText(message, prependNewLineState, body_message_params);
 		prependNewLineState = false;
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index dbbfceb53281cf98a792cf0090dda03155e84452..369273bca6f20d345371412602f1ee267f9f8cdb 100755
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1526,6 +1526,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		}
 
 		glBindBufferARB(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
+
 		gGL.popMatrix();
 
 		if (cur_shader)
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index c9037ce1eba8f91f8f670391d950d247a84e64cd..66b5f137401f38379169f7f8ba4d70e4f7b23e5f 100755
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -194,8 +194,7 @@ public:
 
 	void		setSize(S32 numVertices, S32 num_indices = 0, bool align = false);
 	
-	BOOL		genVolumeBBoxes(const LLVolume &volume, S32 f,
-									const LLMatrix4& mat_vert_in, BOOL global_volume = FALSE);
+	BOOL		genVolumeBBoxes(const LLVolume &volume, S32 f,const LLMatrix4& mat, BOOL global_volume = FALSE);
 	
 	void		init(LLDrawable* drawablep, LLViewerObject* objp);
 	void		destroy();
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 06119620de1287281156a0f5c31e6611ac20e2ad..8e1a1df211bc705189095992de22680ca9f3ec4c 100755
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1545,7 +1545,7 @@ void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::
 		return ;
 	}
 }
-void	LLFastTimerView::onClickCloseBtn(bool)
+void	LLFastTimerView::onClickCloseBtn()
 {
 	setVisible(false);
 }
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 1349b1e99cdd8aafe81b94c5d4245ea23f93de2f..5766cfa0b0525f0012d75c641dbed57e2d60f25b 100755
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -63,7 +63,7 @@ public:
 	F64 getTime(const std::string& name);
 
 protected:
-	virtual	void	onClickCloseBtn(bool app_quitting = false);
+	virtual	void	onClickCloseBtn();
 private:	
 	typedef std::vector<std::vector<S32> > bar_positions_t;
 	bar_positions_t mBarStart;
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 9da8e82c49880b2e2f1a457023263d4ca793ba1c..c151b51c23ba24cc9450256329c0ff8189b13d17 100755
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -422,19 +422,6 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
 			L"PNG Images (*.png)\0*.png\0" \
 			L"\0";
 		break;
-	case FFSAVE_TGAPNG:
-		if (filename.empty())
-		{
-			wcsncpy( mFilesW,L"untitled.png", FILENAME_BUFFER_SIZE);	/*Flawfinder: ignore*/
-			//PNG by default
-		}
-		mOFN.lpstrDefExt = L"png";
-		mOFN.lpstrFilter =
-			L"PNG Images (*.png)\0*.png\0" \
-			L"Targa Images (*.tga)\0*.tga\0" \
-			L"\0";
-		break;
-		
 	case FFSAVE_JPEG:
 		if (filename.empty())
 		{
@@ -653,16 +640,13 @@ bool	LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& filena
 			creator = "TVOD";
 			extension = "wav";
 			break;
+		
 		case FFSAVE_TGA:
 			type = "TPIC";
 			creator = "prvw";
 			extension = "tga";
 			break;
-		case FFSAVE_TGAPNG:
-			type = "PNG";
-			creator = "prvw";
-			extension = "png";
-			break;
+		
 		case FFSAVE_BMP:
 			type = "BMPf";
 			creator = "prvw";
@@ -937,20 +921,6 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
 		g_slist_free (file_list);
 	}
 
-	// let's save the extension of the last added file(considering current filter)
-	GtkFileFilter *gfilter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(widget));
-	std::string filter = gtk_file_filter_get_name(gfilter);
-
-	if(filter == LLTrans::getString("png_image_files"))
-	{
-		picker->mCurrentExtension = ".png";
-	}
-	else if(filter == LLTrans::getString("targa_image_files"))
-	{
-		picker->mCurrentExtension = ".tga";
-	}
-
-
 	// set the default path for this usage context.
 	const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
 	if (cur_folder != NULL)
@@ -1122,24 +1092,6 @@ static std::string add_dictionary_filter_to_gtkchooser(GtkWindow *picker)
 							LLTrans::getString("dictionary_files") + " (*.dic; *.xcu)");
 }
 
-static std::string add_save_texture_filter_to_gtkchooser(GtkWindow *picker)
-{
-	GtkFileFilter *gfilter_tga = gtk_file_filter_new();
-	GtkFileFilter *gfilter_png = gtk_file_filter_new();
-
-	gtk_file_filter_add_pattern(gfilter_tga, "*.tga");
-	gtk_file_filter_add_mime_type(gfilter_png, "image/png");
-	std::string caption = LLTrans::getString("save_texture_image_files") + " (*.tga; *.png)";
-	gtk_file_filter_set_name(gfilter_tga, LLTrans::getString("targa_image_files").c_str());
-	gtk_file_filter_set_name(gfilter_png, LLTrans::getString("png_image_files").c_str());
-
-	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
-					gfilter_png);
-	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
-					gfilter_tga);
-	return caption;
-}
-
 BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
 {
 	BOOL rtn = FALSE;
@@ -1177,15 +1129,6 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 				(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
 			suggest_ext = ".bmp";
 			break;
-		case FFSAVE_PNG:
-			caption += add_simple_mime_filter_to_gtkchooser
-				(picker, "image/png", LLTrans::getString("png_image_files") + " (*.png)");
-			suggest_ext = ".png";
-			break;
-		case FFSAVE_TGAPNG:
-			caption += add_save_texture_filter_to_gtkchooser(picker);
-			suggest_ext = ".png";
-			break;
 		case FFSAVE_AVI:
 			caption += add_simple_mime_filter_to_gtkchooser
 				(picker, "video/x-msvideo",
@@ -1238,17 +1181,9 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 		}
 
 		gtk_widget_show_all(GTK_WIDGET(picker));
-
 		gtk_main();
 
 		rtn = (getFileCount() == 1);
-
-		if(rtn && filter == FFSAVE_TGAPNG)
-		{
-			std::string selected_file = mFiles.back();
-			mFiles.pop_back();
-			mFiles.push_back(selected_file + mCurrentExtension);
-		}
 	}
 
 	gViewerWindow->getWindow()->afterDialog();
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
index f0f82c51db0a218acef6ae0d1d41dbd0b5c99476..0d279f73f3065d696877ebeec092e34318271022 100755
--- a/indra/newview/llfilepicker.h
+++ b/indra/newview/llfilepicker.h
@@ -107,7 +107,6 @@ public:
 		FFSAVE_PNG = 13,
 		FFSAVE_JPEG = 14,
 		FFSAVE_SCRIPT = 15,
-		FFSAVE_TGAPNG = 16
 	};
 
 	// open the dialog. This is a modal operation
@@ -176,8 +175,6 @@ private:
 	// we remember the last path that was accessed for a particular usage
 	std::map <std::string, std::string> mContextToPathMap;
 	std::string mCurContextName;
-	// we also remember the extension of the last added file.
-	std::string mCurrentExtension;
 #endif
 
 	std::vector<std::string> mFiles;
diff --git a/indra/newview/llfloaterconversationpreview.cpp b/indra/newview/llfloaterconversationpreview.cpp
index 5041f4689da28690e532e3f27aab47aeca931d76..4a85160f95df2c4c37cbc8dabe8c72d3563dc37a 100755
--- a/indra/newview/llfloaterconversationpreview.cpp
+++ b/indra/newview/llfloaterconversationpreview.cpp
@@ -44,8 +44,7 @@ LLFloaterConversationPreview::LLFloaterConversationPreview(const LLSD& session_i
 	mPageSize(gSavedSettings.getS32("ConversationHistoryPageSize")),
 	mAccountName(session_id[LL_FCP_ACCOUNT_NAME]),
 	mCompleteName(session_id[LL_FCP_COMPLETE_NAME]),
-	mMutex(NULL),
-	mShowHistory(false)
+	mMutex(NULL)
 {
 }
 
@@ -92,11 +91,12 @@ BOOL LLFloaterConversationPreview::postBuild()
 	mPageSpinner->setMinValue(1);
 	mPageSpinner->set(1);
 	mPageSpinner->setEnabled(false);
+	mChatHistoryLoaded = false;
 	LLLogChat::startChatHistoryThread(file, load_params);
 	return LLFloater::postBuild();
 }
 
-void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages, const std::string& file_name)
+void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages,const std::string& file_name)
 {
 	if(file_name == mChatHistoryFileName)
 	{
@@ -111,30 +111,34 @@ void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages, const std
 
 		std::string total_page_num = llformat("/ %d", mCurrentPage+1);
 		getChild<LLTextBox>("page_num_label")->setValue(total_page_num);
-		mShowHistory = true;
+		mChatHistoryLoaded = true;
 	}
 }
 
 void LLFloaterConversationPreview::draw()
 {
-	if(mShowHistory)
+	if(mChatHistoryLoaded)
 	{
 		showHistory();
-		mShowHistory = false;
+		mChatHistoryLoaded = false;
 	}
 	LLFloater::draw();
 }
 
 void LLFloaterConversationPreview::onOpen(const LLSD& key)
 {
-	mShowHistory = true;
+	if(mChatHistoryLoaded)
+	{
+		showHistory();
+	}
 }
 
 void LLFloaterConversationPreview::showHistory()
 {
-	// additional protection to avoid changes of mMessages in setPages
+	// additional protection to avoid changes of mMessages in setPages()
 	LLMutexLock lock(&mMutex);
-	if(!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
+
+	if (!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
 	{
 		return;
 	}
@@ -143,7 +147,7 @@ void LLFloaterConversationPreview::showHistory()
 	std::ostringstream message;
 	std::list<LLSD>::const_iterator iter = mMessages.begin();
 	std::advance(iter, mCurrentPage * mPageSize);
-	
+
 	for (int msg_num = 0; iter != mMessages.end() && msg_num < mPageSize; ++iter, ++msg_num)
 	{
 		LLSD msg = *iter;
@@ -194,11 +198,10 @@ void LLFloaterConversationPreview::showHistory()
 void LLFloaterConversationPreview::onMoreHistoryBtnClick()
 {
 	mCurrentPage = (int)(mPageSpinner->getValueF32());
-	if (!mCurrentPage)
+	if (--mCurrentPage < 0)
 	{
 		return;
 	}
 
-	mCurrentPage--;
-	mShowHistory = true;
+	showHistory();
 }
diff --git a/indra/newview/llfloaterconversationpreview.h b/indra/newview/llfloaterconversationpreview.h
index b0488f4ff127d51bdd58417b3cf0629bdc01e318..f8796127baafaca6f2e5db8c655722a1f2f1369a 100755
--- a/indra/newview/llfloaterconversationpreview.h
+++ b/indra/newview/llfloaterconversationpreview.h
@@ -62,7 +62,7 @@ private:
 	std::string		mAccountName;
 	std::string		mCompleteName;
 	std::string     mChatHistoryFileName;
-	bool			mShowHistory;
+	bool			mChatHistoryLoaded;
 };
 
 #endif /* LLFLOATERCONVERSATIONPREVIEW_H_ */
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp
index 0c735dec1fa161ce704a511ae55926013c02b653..49da4e64b3c512b054961f6c61d4d3d2d14f0de0 100755
--- a/indra/newview/llfloatergroupinvite.cpp
+++ b/indra/newview/llfloatergroupinvite.cpp
@@ -30,7 +30,6 @@
 #include "llpanelgroupinvite.h"
 #include "lltrans.h"
 #include "lldraghandle.h"
-#include "llgroupmgr.h"
 
 class LLFloaterGroupInvite::impl
 {
@@ -124,11 +123,6 @@ void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, uuid_vec_t *agen
 	LLFloaterGroupInvite *fgi = get_if_there(impl::sInstances,
 											 group_id,
 											 (LLFloaterGroupInvite*)NULL);
-
-	// refresh group information
-	LLGroupMgr::getInstance()->clearGroupData(group_id);
-
-
 	if (!fgi)
 	{
 		fgi = new LLFloaterGroupInvite(group_id);
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 9a27c8b7f8a293860bb8af67b21161a9185e258b..90b4490e1dcac0fb893fb6405e7cedecaf98d3d7 100755
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -101,7 +101,6 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
 
 	gSavedPerAccountSettings.setBOOL("ConversationsListPaneCollapsed", mConversationsPane->isCollapsed());
 	gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed());
-	gSavedPerAccountSettings.setBOOL("ConversationsParticipantListCollapsed", !isParticipantListExpanded());
 
 	if (!LLSingleton<LLIMMgr>::destroyed())
 	{
@@ -251,11 +250,6 @@ BOOL LLFloaterIMContainer::postBuild()
 	// Init the sort order now that the root had been created
 	setSortOrder(LLConversationSort(gSavedSettings.getU32("ConversationSortOrder")));
 	
-	//We should expand nearby chat participants list for the new user
-	if(gAgent.isFirstLogin() || !gSavedPerAccountSettings.getBOOL("ConversationsParticipantListCollapsed"))
-	{
-		expandConversation();
-	}
 	// Keep the xml set title around for when we have to overwrite it
 	mGeneralTitle = getTitle();
 	
@@ -668,10 +662,10 @@ void LLFloaterIMContainer::setVisible(BOOL visible)
 			LLFloater* session_floater = widget->getSessionFloater();
 			if (session_floater != nearby_chat)
 			{
-				widget->setVisibleIfDetached(visible);
-			}
+		    widget->setVisibleIfDetached(visible);
 		}
 	}
+	}
 	
 	// Now, do the normal multifloater show/hide
 	LLMultiFloater::setVisible(visible);
@@ -706,13 +700,13 @@ void LLFloaterIMContainer::setVisibleAndFrontmost(BOOL take_focus, const LLSD& k
 	// Only select other sessions
 	if (!getSelectedSession().isNull())
 	{
-		selectConversationPair(getSelectedSession(), false, take_focus);
+    selectConversationPair(getSelectedSession(), false, take_focus);
 	}
 	if (mInitialized && mIsFirstLaunch)
 	{
 		collapseMessagesPane(gSavedPerAccountSettings.getBOOL("ConversationsMessagePaneCollapsed"));
 		mIsFirstLaunch = false;
-	}
+}
 }
 
 void LLFloaterIMContainer::updateResizeLimits()
@@ -840,7 +834,7 @@ void LLFloaterIMContainer::assignResizeLimits()
 
 	S32 conv_pane_target_width = is_conv_pane_expanded
 		? ( is_msg_pane_expanded?mConversationsPane->getRect().getWidth():mConversationsPane->getExpandedMinDim() )
-		: mConversationsPane->getMinDim();
+			: mConversationsPane->getMinDim();
 
 	S32 msg_pane_min_width  = is_msg_pane_expanded ? mMessagesPane->getExpandedMinDim() : 0;
 	S32 new_min_width = conv_pane_target_width + msg_pane_min_width + summary_width_of_visible_borders;
@@ -1001,7 +995,7 @@ void LLFloaterIMContainer::setSortOrder(const LLConversationSort& order)
 			conversation_floater->setSortOrder(order);
 		}
 	}
-
+	
 	gSavedSettings.setU32("ConversationSortOrder", (U32)order);
 }
 
@@ -1192,7 +1186,7 @@ void LLFloaterIMContainer::doToSelectedConversation(const std::string& command,
         }
         else if("chat_history" == command)
         {
-        	if (selectedIDS.size() > 0)
+			if (selectedIDS.size() > 0)
 			{
 				LLAvatarActions::viewChatHistory(selectedIDS.front());
 			}
@@ -1214,7 +1208,7 @@ void LLFloaterIMContainer::doToSelectedConversation(const std::string& command,
     	    {
     	      	LLFloaterReg::showInstance("preview_conversation", LLSD(LLUUID::null), true);
     	    }
-    	}
+}
     }
 }
 
@@ -1245,7 +1239,7 @@ void LLFloaterIMContainer::doToSelectedGroup(const LLSD& userdata)
 
     if (action == "group_profile")
     {
-    	LLGroupActions::show(mSelectedSession);
+        LLGroupActions::show(mSelectedSession);
     }
     else if (action == "activate_group")
     {
@@ -2092,19 +2086,6 @@ void LLFloaterIMContainer::expandConversation()
 		}
 	}
 }
-bool LLFloaterIMContainer::isParticipantListExpanded()
-{
-	bool is_expanded = false;
-	if(!mConversationsPane->isCollapsed())
-	{
-		LLConversationViewSession* widget = dynamic_cast<LLConversationViewSession*>(get_ptr_in_map(mConversationsWidgets,getSelectedSession()));
-		if (widget)
-		{
-			is_expanded = widget->isOpen();
-		}
-	}
-	return is_expanded;
-}
 
 // By default, if torn off session is currently frontmost, LLFloater::isFrontmost() will return FALSE, which can lead to some bugs
 // So LLFloater::isFrontmost() is overriden here to check both selected session and the IM floater itself
@@ -2121,7 +2102,7 @@ BOOL LLFloaterIMContainer::isFrontmost()
 
 // For conversations, closeFloater() (linked to Ctrl-W) does not actually close the floater but the active conversation.
 // This is intentional so it doesn't confuse the user. onClickCloseBtn() closes the whole floater.
-void LLFloaterIMContainer::onClickCloseBtn(bool app_quitting/* = false*/)
+void LLFloaterIMContainer::onClickCloseBtn()
 {
 	// Always unminimize before trying to close.
 	// Most of the time the user will never see this state.
@@ -2130,7 +2111,7 @@ void LLFloaterIMContainer::onClickCloseBtn(bool app_quitting/* = false*/)
 		LLMultiFloater::setMinimized(FALSE);
 	}
 
-	LLFloater::closeFloater(app_quitting);
+	LLFloater::closeFloater();
 }
 
 void LLFloaterIMContainer::closeHostedFloater()
@@ -2177,7 +2158,7 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)
 	if(app_quitting)
 	{
 		closeAllConversations();
-		onClickCloseBtn(app_quitting);
+		onClickCloseBtn();
 	}
 	else
 	{
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 5d88b7881a0dda2fd4ba1205d9f93970d94d7e49..36da457cacfb5f34ee4f549eb652ef81ff575a9a 100755
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -134,7 +134,7 @@ private:
 	void onStubCollapseButtonClicked();
 	void processParticipantsStyleUpdate();
 	void onSpeakButtonClicked();
-	/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
+	/*virtual*/ void onClickCloseBtn();
 	/*virtual*/ void closeHostedFloater();
 
 	void collapseConversationsPane(bool collapse, bool save_is_allowed=true);
@@ -172,7 +172,6 @@ private:
 	void toggleAllowTextChat(const LLUUID& participant_uuid);
 	void toggleMute(const LLUUID& participant_id, U32 flags);
 	void openNearbyChat();
-	bool isParticipantListExpanded();
 
 	LLButton* mExpandCollapseBtn;
 	LLButton* mStubCollapseBtn;
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 323e84751f6f7b819ba0410562d17d7735fccd65..3d77ea4f0bb3ab7fc1861214f39b125173e0ae68 100755
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -308,8 +308,7 @@ void LLFloaterIMNearbyChat::onClose(bool app_quitting)
 }
 
 // virtual
-void LLFloaterIMNearbyChat::onClickCloseBtn(bool)
-
+void LLFloaterIMNearbyChat::onClickCloseBtn()
 {
 	if (!isTornOff())
 	{
@@ -494,11 +493,11 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()
 			if (!rest_of_match.empty())
 			{
 				mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part
+
 				// Select to end of line, starting from the character
 				// after the last one the user typed.
-				mInputEditor->selectByCursorPosition(utf8_out_str.size()-rest_of_match.size(),utf8_out_str.size());
+				mInputEditor->selectNext(rest_of_match, false);
 			}
-
 		}
 		else if (matchChatTypeTrigger(utf8_trigger, &utf8_out_str))
 		{
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index f0daacd6a9e7212e572f147f40d3082e7d84a94a..05b48cccb03657a2b3e7f646f04cdc9225eec7c9 100755
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -95,7 +95,7 @@ protected:
 	void onChatFontChange(LLFontGL* fontp);
 
 	/*virtual*/ void onTearOffClicked();
-	/*virtual*/ void onClickCloseBtn(bool app_qutting = false);
+	/*virtual*/ void onClickCloseBtn();
 
 	static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
 	EChatType processChatTypeTriggers(EChatType type, std::string &str);
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index 14e1a486d3232e1edc6689c2bc66452ada907d57..5cb9df5625895f96c22dcfb1c9e58aa1195af85c 100755
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -112,7 +112,7 @@ void LLFloaterIMSession::onTearOffClicked()
 }
 
 // virtual
-void LLFloaterIMSession::onClickCloseBtn(bool)
+void LLFloaterIMSession::onClickCloseBtn()
 {
 	LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
 
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index d6718843ca0109240572533c158000f33a5ab4d6..a0e0171b344baa322714bc3766e6851f499e7197 100755
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -141,7 +141,7 @@ private:
 	/*virtual*/ void refresh();
 
     /*virtual*/ void onTearOffClicked();
-	/*virtual*/ void onClickCloseBtn(bool app_qutting);
+	/*virtual*/ void onClickCloseBtn();
 
 	// Update the window title and input field help text
 	/*virtual*/ void updateSessionName(const std::string& name);
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 6c8e81e56324ae8cf404f29dce10eb815dc82681..8f20d4e0823ad7854f00294d9aeac3b77c70cb23 100755
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2374,7 +2374,7 @@ void LLPanelLandAccess::refresh()
 	{
 		BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
 		BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
-		BOOL public_access = !use_access_list;
+		BOOL public_access = !use_access_list && !use_group;
 		
 		getChild<LLUICtrl>("public_access")->setValue(public_access );
 		getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
@@ -2541,10 +2541,6 @@ void LLPanelLandAccess::refresh_ui()
 	getChildView("HoursSpin")->setEnabled(FALSE);
 	getChildView("AccessList")->setEnabled(FALSE);
 	getChildView("BannedList")->setEnabled(FALSE);
-	getChildView("add_allowed")->setEnabled(FALSE);
-	getChildView("remove_allowed")->setEnabled(FALSE);
-	getChildView("add_banned")->setEnabled(FALSE);
-	getChildView("remove_banned")->setEnabled(FALSE);
 	
 	LLParcel *parcel = mParcel->getParcel();
 	if (parcel)
@@ -2583,6 +2579,7 @@ void LLPanelLandAccess::refresh_ui()
 			{
 				getChildView("Only Allow")->setToolTip(std::string());
 			}
+			getChildView("GroupCheck")->setEnabled(FALSE);
 			getChildView("PassCheck")->setEnabled(FALSE);
 			getChildView("pass_combo")->setEnabled(FALSE);
 			getChildView("AccessList")->setEnabled(FALSE);
@@ -2592,7 +2589,11 @@ void LLPanelLandAccess::refresh_ui()
 			getChildView("limit_payment")->setEnabled(FALSE);
 			getChildView("limit_age_verified")->setEnabled(FALSE);
 
-
+			std::string group_name;
+			if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
+			{			
+				getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+			}
 			BOOL group_access = getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
 			BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
 			getChildView("PassCheck")->setEnabled(can_manage_allowed);
@@ -2603,11 +2604,6 @@ void LLPanelLandAccess::refresh_ui()
 				getChildView("HoursSpin")->setEnabled(can_manage_allowed);
 			}
 		}
-		std::string group_name;
-		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
-		{
-			getChildView("GroupCheck")->setEnabled(can_manage_allowed);
-		}
 		getChildView("AccessList")->setEnabled(can_manage_allowed);
 		S32 allowed_list_count = parcel->mAccessList.size();
 		getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
@@ -2654,6 +2650,17 @@ void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
 		return;
 	}
 
+	// If we disabled public access, enable group access by default (if applicable)
+	BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
+	if (public_access == FALSE)
+	{
+		std::string group_name;
+		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
+		{
+			self->getChild<LLUICtrl>("GroupCheck")->setValue(public_access ? FALSE : TRUE);
+		}
+	}
+	
 	onCommitAny(ctrl, userdata);
 }
 
@@ -2687,6 +2694,7 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	if (public_access)
 	{
 		use_access_list = FALSE;
+		use_access_group = FALSE;
 		limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
 		limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
 	}
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index c5248719e933a010ce77a14d0f5be57f6fded6c0..5f9556a870d66810af487f69807501b362bf54c9 100755
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -57,7 +57,7 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
 	getChild<LLPanel>(sMainPanelName)->onOpen(key);
 }
 
-void LLFloaterSidePanelContainer::onClickCloseBtn(bool)
+void LLFloaterSidePanelContainer::onClickCloseBtn()
 {
 	LLPanelOutfitEdit* panel_outfit_edit =
 		dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 65ec8f604e65b4446f74783655dba90f5b0c6cc2..491723471fb1109211764fe9b6757234071b9cf4 100755
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -51,7 +51,7 @@ public:
 
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
+	/*virtual*/ void onClickCloseBtn();
 
 	LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
 
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 0720d443f8f812735798f5073a41645693745288..54522bb7f66c32401e25d61a73b4c6ff0a1556f7 100755
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -251,7 +251,6 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
 			llinfos << "Muting by name " << mute.mName << llendl;
 			updateAdd(mute);
 			notifyObservers();
-			notifyObserversDetailed(mute);
 			return TRUE;
 		}
 		else
@@ -300,7 +299,6 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
 				llinfos << "Muting " << localmute.mName << " id " << localmute.mID << " flags " << localmute.mFlags << llendl;
 				updateAdd(localmute);
 				notifyObservers();
-				notifyObserversDetailed(localmute);
 				if(!(localmute.mFlags & LLMute::flagParticles))
 				{
 					//Kill all particle systems owned by muted task
@@ -398,7 +396,6 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
 		}
 		
 		// Must be after erase.
-		notifyObserversDetailed(localmute);
 		setLoaded();  // why is this here? -MG
 	}
 	else
@@ -412,7 +409,6 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
 			updateRemove(mute);
 			mLegacyMutes.erase(legacy_it);
 			// Must be after erase.
-			notifyObserversDetailed(mute);
 			setLoaded(); // why is this here? -MG
 		}
 	}
@@ -766,16 +762,3 @@ void LLMuteList::notifyObservers()
 		it = mObservers.upper_bound(observer);
 	}
 }
-
-void LLMuteList::notifyObserversDetailed(const LLMute& mute)
-{
-	for (observer_set_t::iterator it = mObservers.begin();
-		it != mObservers.end();
-		)
-	{
-		LLMuteListObserver* observer = *it;
-		observer->onChangeDetailed(mute);
-		// In case onChange() deleted an entry.
-		it = mObservers.upper_bound(observer);
-	}
-}
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index 3e998b4f0e2ad852bf37485fdbf122fc1f00786a..7a70370fe33519106950250dd2f98d197ac25bdd 100755
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -123,7 +123,6 @@ private:
 
 	void setLoaded();
 	void notifyObservers();
-	void notifyObserversDetailed(const LLMute &mute);
 
 	void updateAdd(const LLMute& mute);
 	void updateRemove(const LLMute& mute);
@@ -174,7 +173,6 @@ class LLMuteListObserver
 public:
 	virtual ~LLMuteListObserver() { }
 	virtual void onChange() = 0;
-	virtual void onChangeDetailed(const LLMute& ) { }
 };
 
 
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 1ff0bfd09136e117774138a508ba1dc52865de1d..53deded2f23cc8594e3ab57b4924bbb3ce47d152 100755
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -542,13 +542,6 @@ void LLPanelMainInventory::changed(U32)
 	updateItemcountText();
 }
 
-void LLPanelMainInventory::setFocusFilterEditor()
-{
-	if(mFilterEditor)
-	{
-		mFilterEditor->setFocus(true);
-	}
-}
 
 // virtual
 void LLPanelMainInventory::draw()
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index fc8cc67c338dab0d47bf2b6c14f3670340f816d1..394b004e209ffafb95382edc148d1b2459da5775 100755
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -82,9 +82,6 @@ public:
 	void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
 
 	void onFilterEdit(const std::string& search_string );
-
-	void setFocusFilterEditor();
-
 protected:
 	//
 	// Misc functions
diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp
index d8fc2bee32041fcdd58c2b155fa06acbb53d6756..076c3e0235b9b22bb7c25eefcbccd1f321b47813 100755
--- a/indra/newview/llpersistentnotificationstorage.cpp
+++ b/indra/newview/llpersistentnotificationstorage.cpp
@@ -77,14 +77,6 @@ void LLPersistentNotificationStorage::saveNotifications()
 		}
 
 		data.append(notification->asLLSD(true));
-		if (data.size() >= gSavedSettings.getS32("MaxPersistentNotifications"))
-		{
-			llwarns << "Too many persistent notifications."
-					<< " Saved " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << history_channel->size()
-					<< " persistent notifications." << llendl;
-			break;
-		}
-
 	}
 
 	writeNotifications(output);
@@ -105,6 +97,7 @@ void LLPersistentNotificationStorage::loadNotifications()
 	}
 
 	mLoaded = true;
+
 	LLSD input;
 	if (!readNotifications(input) ||input.isUndefined())
 	{
@@ -122,9 +115,9 @@ void LLPersistentNotificationStorage::loadNotifications()
 		findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
 
 	LLNotifications& instance = LLNotifications::instance();
-	S32 processed_notifications = 0;
-	for (LLSD::reverse_array_iterator notification_it = data.rbeginArray();
-		notification_it != data.rendArray();
+
+	for (LLSD::array_const_iterator notification_it = data.beginArray();
+		notification_it != data.endArray();
 		++notification_it)
 	{
 		LLSD notification_params = *notification_it;
@@ -143,16 +136,8 @@ void LLPersistentNotificationStorage::loadNotifications()
 			// hide saved toasts so they don't confuse the user
 			notification_channel->hideToast(notification->getID());
 		}
-		++processed_notifications;
-		if (processed_notifications >= gSavedSettings.getS32("MaxPersistentNotifications"))
-		{
-			llwarns << "Too many persistent notifications."
-					<< " Processed " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << data.size() << " persistent notifications." << llendl;
-		    break;
-		}
 	}
-	LLNotifications::instance().getChannel("Persistent")->
-			connectChanged(boost::bind(&LLPersistentNotificationStorage::onPersistentChannelChanged, this, _1));
+
 	LL_INFOS("LLPersistentNotificationStorage") << "finished loading notifications" << LL_ENDL;
 }
 
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 1ed48a978fffa2693494b8e55221b0d4c8340e9f..91a98792eb56b3dd0e529db8c3dce9e9d1e4d916 100755
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -36,7 +36,6 @@
 #include "llfilepicker.h"
 #include "llfloaterreg.h"
 #include "llimagetga.h"
-#include "llimagepng.h"
 #include "llinventory.h"
 #include "llnotificationsutil.h"
 #include "llresmgr.h"
@@ -262,7 +261,7 @@ void LLPreviewTexture::saveAs()
 
 	LLFilePicker& file_picker = LLFilePicker::instance();
 	const LLInventoryItem* item = getItem() ;
-	if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGAPNG, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
+	if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGA, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
 	{
 		// User canceled or we failed to acquire save file.
 		return;
@@ -359,27 +358,14 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success,
 
 	if( self && final && success )
 	{
-		const U32 ext_length = 3;
-		std::string extension = self->mSaveFileName.substr( self->mSaveFileName.length() - ext_length);
-
-		// We only support saving in PNG or TGA format
-		LLPointer<LLImageFormatted> image;
-		if(extension == "png")
-		{
-			image = new LLImagePNG;
-		}
-		else if(extension == "tga")
-		{
-			image = new LLImageTGA;
-		}
-
-		if( image && !image->encode( src, 0 ) )
+		LLPointer<LLImageTGA> image_tga = new LLImageTGA;
+		if( !image_tga->encode( src ) )
 		{
 			LLSD args;
 			args["FILE"] = self->mSaveFileName;
 			LLNotificationsUtil::add("CannotEncodeFile", args);
 		}
-		else if( image && !image->save( self->mSaveFileName ) )
+		else if( !image_tga->save( self->mSaveFileName ) )
 		{
 			LLSD args;
 			args["FILE"] = self->mSaveFileName;
diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp
index cbd8bee9d5733e7706b5273a890cdf2a747663d2..09e799e4f741b11f4968aaa58579cb626906162c 100755
--- a/indra/newview/llsceneview.cpp
+++ b/indra/newview/llsceneview.cpp
@@ -51,7 +51,7 @@ LLSceneView::LLSceneView(const LLRect& rect)
 	setCanClose(true);
 }
 
-void LLSceneView::onClickCloseBtn(bool)
+void LLSceneView::onClickCloseBtn()
 {
 	setVisible(false);
 }
diff --git a/indra/newview/llsceneview.h b/indra/newview/llsceneview.h
index 1fceecb9e1a9efe975ff3574588c5f8805bfb6c9..2a3a14bbee45571dd6dee59bc3ab2633dfa7a380 100755
--- a/indra/newview/llsceneview.h
+++ b/indra/newview/llsceneview.h
@@ -38,7 +38,7 @@ public:
 	virtual void draw();
 	
 protected:
-	virtual void onClickCloseBtn(bool app_qutting = false);
+	virtual void onClickCloseBtn();
 
 
 };
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index cbf43dbb937c522f51eaf32ee6712262b8188bea..8915bb2fef789c78f5c9c4a88dd178d987381f17 100755
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -397,7 +397,7 @@ void LLSidepanelInventory::onToggleInboxBtn()
 void LLSidepanelInventory::onOpen(const LLSD& key)
 {
 	LLFirstUse::newInventory(false);
-	mPanelMainInventory->setFocusFilterEditor();
+
 #if AUTO_EXPAND_INBOX
 	// Expand the inbox if we have fresh items
 	LLPanelMarketplaceInbox * inbox = findChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 9be6d0c5f1a8242920dba7885f1731eebf5e8eaa..ad7c939728fe36b668a7f4d8283c13223a0289f4 100755
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -1170,10 +1170,6 @@ void LLSidepanelTaskInfo::doClickAction(U8 click_action)
 			// Warn, but do it anyway.
 			LLNotificationsUtil::add("ClickActionNotPayable");
 		}
-		else
-		{
-			handle_give_money_dialog();
-		}
 	}
 	LLSelectMgr::getInstance()->selectionSetClickAction(click_action);
 }
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 448fae48de4ef8548e09803d139d0038167c31d7..d876c9a3f4b8614ae7fb8575a79abf57ceedc2c3 100755
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -555,7 +555,7 @@ BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
 		mHideBtnPressed = mHideBtn->getRect().pointInRect(x, y);
 	}
 
-	return LLModalDialog::handleMouseDown(x, y, mask);
+	return LLFloater::handleMouseDown(x, y, mask);
 }
 
 //--------------------------------------------------------------------------
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index fe7f1cf8f3a91e2708c4cead95019f584bbd04f9..d02171b512c3bc91cfad83a7ad25436fa51d979a 100755
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -69,8 +69,6 @@ public:
 
 	virtual void updateNotification() {}
 
-	bool isControlPanelEnabled() const;
-
 protected:
 	LLButton* createButton(const LLSD& form_element, BOOL is_option);
 
diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp
index e1b764a9438c541f142126bf9c2dd04fde1b0cab..a30f8419806e89e1840f3d3fe4ccd858f3cf1c1d 100755
--- a/indra/newview/lltoastpanel.cpp
+++ b/indra/newview/lltoastpanel.cpp
@@ -52,12 +52,6 @@ std::string LLToastPanel::getTitle()
 	return mNotification->getMessage();
 }
 
-//virtual
-const std::string& LLToastPanel::getNotificationName()
-{
-	return mNotification->getName();
-}
-
 //virtual
 const LLUUID& LLToastPanel::getID()
 {
diff --git a/indra/newview/lltoastpanel.h b/indra/newview/lltoastpanel.h
index 51630381f2118ff899b298484a1cc80d21df40d4..e4ab95007e521c104a1ca47f0839000112613a32 100755
--- a/indra/newview/lltoastpanel.h
+++ b/indra/newview/lltoastpanel.h
@@ -45,7 +45,6 @@ public:
 	virtual ~LLToastPanel() = 0;
 
 	virtual std::string getTitle();
-	virtual const std::string& getNotificationName();
 	virtual const LLUUID& getID();
 
 	static const S32 MIN_PANEL_HEIGHT;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index d77aaa27ac621a854d87ddbd04522a9c8fad76b3..ab9ea5618e87230640d52639022b1ef55c8c154f 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -45,7 +45,6 @@
 #include "llsd.h"
 #include "llsdserialize.h"
 #include "llteleportflags.h"
-#include "lltoastnotifypanel.h"
 #include "lltransactionflags.h"
 #include "llvfile.h"
 #include "llvfs.h"
@@ -3229,20 +3228,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			payload["online"] = (offline == IM_ONLINE);
 			payload["sender"] = msg->getSender().getIPandPort();
 
-			bool add_notification = true;
-			for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
-				, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
-			{
-				LLToastNotifyPanel& panel = *ti;
-				const std::string& notification_name = panel.getNotificationName();
-				if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled())
-				{
-					add_notification = false;
-					break;
-				}
-			}
-
-			if (is_muted && add_notification)
+			if (is_muted)
 			{
 				LLNotifications::instance().forceResponse(LLNotification::Params("OfferFriendship").payload(payload), 1);
 			}
@@ -3253,9 +3239,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 					send_do_not_disturb_message(msg, from_id);
 				}
 				args["NAME_SLURL"] = LLSLURL("agent", from_id, "about").getSLURLString();
-
-				if (add_notification)
-				{
 				if(message.empty())
 				{
 					//support for frienship offers from clients before July 2008
@@ -3271,7 +3254,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				}
 			}
 		}
-		}
 		break;
 
 	case IM_FRIENDSHIP_ACCEPTED:
@@ -3834,6 +3816,19 @@ public:
 				LLInventoryModel::EXCLUDE_TRASH,
 				is_card);
 		}
+		LLSD args;
+		if ( land_items.count() > 0 )
+		{	// Show notification that they can now teleport to landmarks.  Use a random landmark from the inventory
+			S32 random_land = ll_rand( land_items.count() - 1 );
+			args["NAME"] = land_items[random_land]->getName();
+			LLNotificationsUtil::add("TeleportToLandmark",args);
+		}
+		if ( card_items.count() > 0 )
+		{	// Show notification that they can now contact people.  Use a random calling card from the inventory
+			S32 random_card = ll_rand( card_items.count() - 1 );
+			args["NAME"] = card_items[random_card]->getName();
+			LLNotificationsUtil::add("TeleportToPerson",args);
+		}
 
 		gInventory.removeObserver(this);
 		delete this;
@@ -4110,6 +4105,18 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 
 		if (isAgentAvatarValid())
 		{
+			// Chat the "back" SLURL. (DEV-4907)
+
+			LLSLURL slurl;
+			gAgent.getTeleportSourceSLURL(slurl);
+			LLSD substitution = LLSD().with("[T_SLURL]", slurl.getSLURLString());
+			std::string completed_from = LLAgent::sTeleportProgressMessages["completed_from"];
+			LLStringUtil::format(completed_from, substitution);
+
+			LLSD args;
+			args["MESSAGE"] = completed_from;
+			LLNotificationsUtil::add("SystemMessageTip", args);
+
 			// Set the new position
 			gAgentAvatarp->setPositionAgent(agent_pos);
 			gAgentAvatarp->clearChat();
@@ -6885,43 +6892,43 @@ void send_lures(const LLSD& notification, const LLSD& response)
 	LLAgentUI::buildSLURL(slurl);
 	text.append("\r\n").append(slurl.getSLURLString());
 
-		LLMessageSystem* msg = gMessageSystem;
-		msg->newMessageFast(_PREHASH_StartLure);
-		msg->nextBlockFast(_PREHASH_AgentData);
-		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
-		msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-		msg->nextBlockFast(_PREHASH_Info);
-		msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in.
-		msg->addStringFast(_PREHASH_Message, text);
-		for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray();
-			it != notification["payload"]["ids"].endArray();
-			++it)
-		{
-			LLUUID target_id = it->asUUID();
+	LLMessageSystem* msg = gMessageSystem;
+	msg->newMessageFast(_PREHASH_StartLure);
+	msg->nextBlockFast(_PREHASH_AgentData);
+	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+	msg->nextBlockFast(_PREHASH_Info);
+	msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in.
+	msg->addStringFast(_PREHASH_Message, text);
+	for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray();
+		it != notification["payload"]["ids"].endArray();
+		++it)
+	{
+		LLUUID target_id = it->asUUID();
 
-			msg->nextBlockFast(_PREHASH_TargetData);
-			msg->addUUIDFast(_PREHASH_TargetID, target_id);
+		msg->nextBlockFast(_PREHASH_TargetData);
+		msg->addUUIDFast(_PREHASH_TargetID, target_id);
 
-			// Record the offer.
-			{
-				std::string target_name;
-				gCacheName->getFullName(target_id, target_name);  // for im log filenames
-				LLSD args;
-				args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();;
+		// Record the offer.
+		{
+			std::string target_name;
+			gCacheName->getFullName(target_id, target_name);  // for im log filenames
+			LLSD args;
+			args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();;
 	
-				LLSD payload;
+			LLSD payload;
 				
-				//*TODO please rewrite all keys to the same case, lower or upper
-				payload["from_id"] = target_id;
+			//*TODO please rewrite all keys to the same case, lower or upper
+			payload["from_id"] = target_id;
 			payload["SUPPRESS_TOAST"] = true;
-				LLNotificationsUtil::add("TeleportOfferSent", args, payload);
+			LLNotificationsUtil::add("TeleportOfferSent", args, payload);
 
-				// Add the recepient to the recent people list.
-				LLRecentPeople::instance().add(target_id);
-			}
+			// Add the recepient to the recent people list.
+			LLRecentPeople::instance().add(target_id);
 		}
-		gAgent.sendReliableMessage();
 	}
+	gAgent.sendReliableMessage();
+}
 
 bool handle_lure_callback(const LLSD& notification, const LLSD& response)
 {
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index f1b959a0b79d276df88ad6c6db802371ee99bbf1..b4e287c446775197f2900e400f6b8e35f8d50df1 100755
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -954,7 +954,7 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
 			objectp = *idle_iter;
 			llassert(objectp->isActive());
 			objectp->idleUpdate(agent, world, frame_time);
-			}
+		}
 
 		//update flexible objects
 		LLVolumeImplFlexible::updateClass();
@@ -962,8 +962,8 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
 		//update animated textures
 		if (gAnimateTextures)
 		{
-		LLViewerTextureAnim::updateClass();
-			}
+			LLViewerTextureAnim::updateClass();
+		}
 	}
 
 
@@ -1326,27 +1326,45 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
 		return;
 	}
 
-	LLViewerObject *objectp = NULL;
 	S32 num_removed = 0;
+	LLViewerObject *objectp;
+	
+	vobj_list_t::reverse_iterator target = mObjects.rbegin();
 
-	vobj_list_t::iterator iter;
-	for (iter = mObjects.begin(); iter != mObjects.end();)
+	vobj_list_t::iterator iter = mObjects.begin();
+	for ( ; iter != mObjects.end(); )
 	{
 		// Scan for all of the dead objects and put them all on the end of the list with no ref count ops
 		objectp = *iter;
+		if (objectp == NULL)
+		{ //we caught up to the dead tail
+			break;
+		}
 
-		if (objectp && objectp->isDead())
+		if (objectp->isDead())
 		{
-			iter = mObjects.erase(iter);
+			LLPointer<LLViewerObject>::swap(*iter, *target);
+			*target = NULL;
+			++target;
 			num_removed++;
+
+			if (num_removed == mNumDeadObjects || iter->isNull())
+			{
+				// We've cleaned up all of the dead objects or caught up to the dead tail
+				break;
+			}
 		}
 		else
 		{
 			++iter;
 		}
 	}
+
 	llassert(num_removed == mNumDeadObjects);
 
+	//erase as a block
+	mObjects.erase(mObjects.begin()+(mObjects.size()-mNumDeadObjects), mObjects.end());
+
 	// We've cleaned the global object list, now let's do some paranoia testing on objects
 	// before blowing away the dead list.
 	mDeadObjects.clear();
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 9497041482b6253823d11c69ba867aa437e9dd4a..ff73aa5354569809fb46ae6731692e762a0307c2 100755
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -786,6 +786,7 @@ void LLVivoxVoiceClient::stateMachine()
 						{
 							loglevel = "0";	// turn logging off completely
 						}
+						loglevel = "0";	// turn logging off completely
 						params.args.add("-ll");
 						params.args.add(loglevel);
 						params.cwd = gDirUtilp->getAppRODataDir();
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 436e226f3e104f2c371f8facbf8a4c17ec7c65f9..d9efd23b436c72b702a5a995337de768adfc2f70 100755
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1036,6 +1036,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &params_in, const S32 detail, bo
 			}
 		}
 
+
 		static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
 
 		bool cache_in_vram = use_transform_feedback && gTransformPositionProgram.mProgramObject &&
@@ -2617,6 +2618,7 @@ void LLVOVolume::setLightTextureID(LLUUID id)
 		if (hasLightTexture())
 		{
 			setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, FALSE, true);
+			parameterChanged(LLNetworkData::PARAMS_LIGHT_IMAGE, true);
 			mLightTexture = NULL;
 		}
 	}		
@@ -2634,7 +2636,8 @@ void LLVOVolume::setSpotLightParams(LLVector3 params)
 		
 void LLVOVolume::setIsLight(BOOL is_light)
 {
-	if (is_light != getIsLight())
+	BOOL was_light = getIsLight();
+	if (is_light != was_light)
 	{
 		if (is_light)
 		{
@@ -2819,7 +2822,7 @@ void LLVOVolume::updateSpotLightPriority()
 bool LLVOVolume::isLightSpotlight() const
 {
 	LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);
-	if (params)
+	if (params && getParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE))
 	{
 		return params->isLightSpotlight();
 	}
@@ -3749,8 +3752,30 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
 			{
 				LLFace* face = mDrawable->getFace(face_hit);				
 
+				bool ignore_alpha = false;
+
+				const LLTextureEntry* te = face->getTextureEntry();
+				if (te)
+				{
+					LLMaterial* mat = te->getMaterialParams();
+					if (mat)
+					{
+						U8 mode = mat->getDiffuseAlphaMode();
+
+						if (mode == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE ||
+							mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE)
+						{
+							ignore_alpha = true;
+						}
+					}
+				}
+
 				if (face &&
-					(pick_transparent || !face->getTexture() || !face->getTexture()->hasGLTexture() || face->getTexture()->getMask(face->surfaceToTexture(tc, p, n))))
+					(ignore_alpha ||
+					pick_transparent || 
+					!face->getTexture() || 
+					!face->getTexture()->hasGLTexture() || 
+					face->getTexture()->getMask(face->surfaceToTexture(tc, p, n))))
 				{
 					local_end = p;
 					if (face_hitp != NULL)
@@ -4435,8 +4460,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	bool emissive = false;
 
-	
-
 	{
 		LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST);
 
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 103668d0510ce381d2daf42038b9d4698e9b56f7..7996f8a64005b31f6e1b3f58f93877639b46c7c5 100755
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -140,7 +140,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 {
 	llinfos << "Add region with handle: " << region_handle << " on host " << host << llendl;
 	LLViewerRegion *regionp = getRegionFromHandle(region_handle);
-	std::string seedUrl;
 	if (regionp)
 	{
 		llinfos << "Region exists, removing it " << llendl;
@@ -162,9 +161,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 			llwarns << "LLWorld::addRegion exists, but isn't alive" << llendl;
 		}
 
-		// Save capabilities seed URL
-		seedUrl = regionp->getCapability("Seed");
-
 		// Kill the old host, and then we can continue on and add the new host.  We have to kill even if the host
 		// matches, because all the agent state for the new camera is completely different.
 		removeRegion(old_host);
@@ -192,11 +188,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 &region_handle, const LLHost &host)
 		llerrs << "Unable to create new region!" << llendl;
 	}
 
-	if ( !seedUrl.empty() )
-	{
-		regionp->setCapability("Seed", seedUrl);
-	}
-
 	mRegionList.push_back(regionp);
 	mActiveRegionList.push_back(regionp);
 	mCulledRegionList.push_back(regionp);
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index f4a7c437ea6b903900ea92d4ca8211325f0f5b45..94c187e21a78b3f306e29e3f413c2824b20a8eac 100755
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -153,7 +153,6 @@ with the same filename but different name
   <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" />
   <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />
   <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" />
-  <texture name="Command_Highlighting_Icon" file_name="toolbar_icons/highlighting.png" preload="true" />
   <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
   <texture name="Caret_Right_Icon"          file_name="toolbar_icons/caret_right.png"  preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
   <texture name="Caret_Left_Icon"           file_name="toolbar_icons/caret_left.png"   preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
index 77b9095f7cdf9996cc9e2506f662b2533f0b3912..50910dff32437eba7156eaf03f2ca7aac9cfc720 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
@@ -17,7 +17,7 @@
          parameter="profile" />
     </menu_item_call>
     <menu_item_call
-     label="IM"
+     label="Send IM..."
      layout="topleft"
      name="Send IM">
         <menu_item_call.on_click
@@ -25,26 +25,7 @@
          parameter="im" />
     </menu_item_call>
     <menu_item_call
-     label="Offer teleport"
-     layout="topleft"
-     name="Offer Teleport">
-        <on_click function="AvatarIcon.Action" parameter="teleport"/>
-    </menu_item_call>
-    <menu_item_call
-     label="Voice call"
-     layout="topleft"
-     name="Voice Call">
-        <on_click function="AvatarIcon.Action" parameter="voice_call"/>
-    </menu_item_call>
-    <menu_item_call
-     label="Chat history..."
-     layout="topleft"
-     name="Chat History">
-        <on_click function="AvatarIcon.Action" parameter="chat_history"/>   
-    </menu_item_call>
-    <menu_item_separator layout="topleft" name="separator_chat_history"/>
-    <menu_item_call
-     label="Add friend"
+     label="Add Friend..."
      layout="topleft"
      name="Add Friend">
         <menu_item_call.on_click
@@ -52,56 +33,11 @@
          parameter="add" />
     </menu_item_call>
     <menu_item_call
-     label="Remove friend"
+     label="Remove Friend..."
      layout="topleft"
      name="Remove Friend">
         <menu_item_call.on_click
          function="AvatarIcon.Action"
          parameter="remove" />
     </menu_item_call>
-    <menu_item_call
-     label="Invite to group..."
-     layout="topleft"
-     name="Invite Group">
-      <on_click function="AvatarIcon.Action" parameter="invite_to_group" />   
-    </menu_item_call>
-    <menu_item_separator layout="topleft" name="separator_invite_to_group"/>
-    <menu_item_call
-     label="Zoom In"
-     layout="topleft"
-     name="Zoom In">
-      <on_click function="AvatarIcon.Action" parameter="zoom_in" />
-    </menu_item_call>
-    <menu_item_call
-     label="Map"
-     layout="topleft"
-     name="Map">
-       <on_click function="AvatarIcon.Action" parameter="map" />
-    </menu_item_call>
-    <menu_item_call
-     label="Share"
-     layout="topleft"
-     name="Share">
-       <on_click function="AvatarIcon.Action" parameter="share" />
-    </menu_item_call>
-    <menu_item_call
-     label="Pay"
-     layout="topleft"
-     name="Pay">
-       <on_click function="AvatarIcon.Action" parameter="pay" />
-    </menu_item_call>
-    <menu_item_check
-     label="Block Voice"
-     layout="topleft"
-     name="Block Unblock">
-       <on_click function="AvatarIcon.Action" parameter="block_unblock" />
-       <on_check function="AvatarIcon.Check" parameter="is_blocked" />
-    </menu_item_check>
-    <menu_item_check
-     label="Block Text"
-     layout="topleft"
-     name="Mute Text">
-       <on_click function="AvatarIcon.Action" parameter="mute_unmute" />
-       <on_check function="AvatarIcon.Check" parameter="is_muted" />   
-  </menu_item_check>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index c7edba21f85aa56e2ea2e084102ed0a56b7d3ef9..3edeb9aa3670b7e782b7afac5715e28633fbeb5c 100755
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -87,7 +87,6 @@
 	         direction="down"
 	         height="23"
 	         image_overlay="Arrow_Left_Off"
-	         image_hover_unselected="PushButton_Over"
 	         image_bottom_pad="1"
 	         layout="topleft"
 	         left="10"
@@ -100,7 +99,6 @@
 	         direction="down"
 	         height="23"
 	         image_overlay="Arrow_Right_Off"
-	         image_hover_unselected="PushButton_Over"
 	         image_bottom_pad="1"
 	         layout="topleft"
 	         left_pad="0"
@@ -113,7 +111,6 @@
 	         height="23"
 	         image_bottom_pad="1"
 	         image_overlay="Home_Off"
-	         image_hover_unselected="PushButton_Over"
 	         layout="topleft"
 	         left_pad="7"
 	         name="home_btn"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 7e79d297ef6af6a392e40a5fd7742d0df422f001..8ac95beddb329738c229bdfe0db4e27cd097f77e 100755
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -456,8 +456,6 @@ Please try logging in again in a minute.</string>
 	<string name="load_file_verb">Load</string>
 	<string name="targa_image_files">Targa Images</string>
 	<string name="bitmap_image_files">Bitmap Images</string>
-	<string name="png_image_files">PNG Images</string>
-	<string name="save_texture_image_files">Targa or PNG Images</string>
 	<string name="avi_movie_file">AVI Movie File</string>
 	<string name="xaf_animation_file">XAF Anim File</string>
 	<string name="xml_file">XML File</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 9559be214a56117ef6e2efe10afe12c3e45e6d32..20acea57ea89fa4fd43262159f9f4db51368d5ac 100755
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -25,25 +25,19 @@ label_pad_left - padding to the left of tab button labels
                tab_bottom_image_selected="Toolbar_Left_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-               tab_top_image_hovered="TabTop_Left_Selected"
-               tab_button_image_hovered="Toolbar_Left_Selected"
-               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
+/>
   <middle_tab tab_top_image_unselected="TabTop_Middle_Off"
                tab_top_image_selected="TabTop_Middle_Selected"
                tab_bottom_image_unselected="Toolbar_Middle_Off"
                tab_bottom_image_selected="Toolbar_Middle_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-               tab_top_image_hovered="TabTop_Middle_Selected"
-               tab_button_image_hovered="Toolbar_Middle_Selected"
-               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
+/>
   <last_tab tab_top_image_unselected="TabTop_Right_Off"
                tab_top_image_selected="TabTop_Right_Selected"
                tab_bottom_image_unselected="Toolbar_Right_Off"
                tab_bottom_image_selected="Toolbar_Right_Selected"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
                tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
-               tab_top_image_hovered="TabTop_Right_Selected"
-               tab_button_image_hovered="Toolbar_Right_Selected"
-               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
+/>
 </tab_container>